//自定义场景视图的四种模式
public enum E_Mode
{
View,
Paint,
Edit,
Erase,
}
//OnSceneGUI 绘制场景视图的GUI 不需要重写
private void OnSceneGUI()
{
DrawModeGUI();
}
//绘制场景模式GUI
private void DrawModeGUI()
{
//获取枚举里所有的项目
List<E_Mode> modes = EditorUtils.GetListFromEnum<E_Mode>();
//保存项目的名称
List<string> modeLabels = new List<string>();
foreach (E_Mode mode in modes)
{
modeLabels.Add(mode.ToString());
}
//绘制场景视图GUI 需要使用Handles类
//绘制场景视图GUI需要在 BeginGUI EndGUI方法对之间
Handles.BeginGUI();
//指定在场景视图的哪一个区域进行绘制
//场景试图坐标 左上角为(0,0)
GUILayout.BeginArea(new Rect(10f,10f,360f,40f));
//具体绘制操作 绘制toolBar
//把Toolbar _CurrentMode的返回值 返回到了_selectedMode里的原因是 为了以后比较选中模式 和当前模式 是否相同
//来判断 是否选择了别的模式
_selectedMode = (E_Mode) GUILayout.Toolbar((int)_CurrentMode,modeLabels.ToArray(),GUILayout.ExpandHeight(true)); //可以扩展高度
GUILayout.EndArea();
Handles.EndGUI();
}
Enfin, vous obtiendrez l'effet suivant