一,菜單項相關操作
1.菜單項(MenuItem)
首先在Asset目錄下新建一個Editor文件夾,然后在該目錄下添加一個腳本MenuTest.cs
代碼內容:
2.組件菜單(AddComponentMenu)
代碼內容為:
3.上下文菜單(ContextMenu)
就是在一個物體的組件上添加上下文菜單,即點擊右鍵出現的菜單
就在上文的Test1中添加一個上下文菜單
代碼內容如下:
using UnityEngine; using System.Collections; using UnityEditor; [AddComponentMenu("菜單組件/MenuTest")] public class Test1 : MonoBehaviour { [ContextMenu("ContextMenu")] public void Test() { Debug.Log("上下文測試"); } }
4.必要組件菜單(RequireComponent)
必要組件是在添加改組件的同時添加其他的組件,而且是依賴於這個組件的,
同樣在上文的Test.cs中添加必要組件,
代碼內容為:
二,自定義Inspector界面
1.屬性相關標識
1)隱藏屬性顯示 (HideInInspector) 2)不顯示的屬性(NonSerialized) 3)關鍵字序列化(Serializable) 4)序列化域(SerializeField)
首先新建腳本文件,InspectorTest.cs 和腳本Type1.cs
InspectorTest.cs:
Type1.cs腳本內容:(Type1類已經被序列化了)
2.自定義界面屬性
這里會用到2個類 Editor 和CustomEditor
Editor是自定義面板的基類
CustomEditor是對應標識的組件腳本
案例1:自定義一個屬性面板
1)首先在Scripts文件夾下新建一個腳本文本OwnerUITest.cs
腳本內容為:
using System; using UnityEngine; using System.Collections; public class OwerUITest : MonoBehaviour { public int IntVal; public float FlatVal; public string StrVal; public Type3 mType = new Type3(); } [Serializable] public class Type3 { public int mInt; public int mInt2; }
2)在Editor文件下新建腳本OwnerUIInspector.cs 這個類要繼承Editor類,而且要在類的前面聲明:[CustomEditor(typeof(OwerUITest))] 關聯剛才新建的腳本
腳本的內容為:
1)首先在Scripts文件夾中新建一個腳本組件InspectorZiDingYi.cs,腳本代碼如下:
2)然后在Editor文件下新建一個類InspectorZiDingYIEditor 繼承Editor,然后與InspectorZiDingYi組件關聯,腳本代碼如下:
3.自定義窗口
-----------------------------界面的啟動和關閉--------------------------
創建自定義窗口需要繼承 基類:EditorWindow
案例1:點擊菜單項,彈出一個窗口
1)首先在Editor文件夾中創建一個腳本MyTestWindow.cs,腳本內容為:
若修改顯示方式:
using UnityEngine; using System.Collections; using UnityEditor; public class MyTestWindow : EditorWindow { [MenuItem("菜單/顯示窗口")] public static void showWindow() { MyTestWindow.CreateInstance<MyTestWindow>().ShowUtility(); } }
再換一種其他的顯示方式:
using UnityEngine; using System.Collections; using UnityEditor; public class MyTestWindow : EditorWindow { [MenuItem("菜單/顯示窗口")] public static void showWindow() { MyTestWindow.CreateInstance<MyTestWindow>().ShowPopup(); } }
這樣顯示的面板是一個空的面板,無法關閉,我們再這個面板上增加一個關閉按鈕:
-----------------------------界面的相關事件機制------------------------
界面的相關事件機制總共有9個: 1.public void OnGUI() ->繪制窗口 2.public void Update() ->刷新方法,100次/秒 3.public void OnInspectorUpdate() ->刷新方法,比Update()少 4.public void OnSelectionChange() ->選擇一個對象 5.public void OnDestroy ->銷毀窗口 6.public void OnFocus() ->獲得焦點 7.public void OnLostFocus() ->失去焦點 8.public void OnHierarchayChange() ->Hierarchay視圖窗口文件發生改變 9.public void OnProjectChange() ->Project視圖窗口文件發生改變
案例測試:
首先在Editor文件夾系新建腳本文件:MyWindow2,同樣首先繼承EditorWindow類,然后實現上述的9個事件機制函數,腳本內容如下:
-----------------------------文本顏色字段------------------------
輸入框:
EditorGUILayout.TextField(string) 文本輸入框 EditorGUILayout.TextArea(string); 可換行的文本輸入框
EditorGUILayout.PasswordField(string); 文本輸入框
EditorGUILayout.ColorField(Color); 顏色輸入框
1)首先在Editor文件夾下新建腳本TextColorwindow.cs,文件內容如下:
-----------------------------標簽字段------------------------
標簽: EditorGUILayout.LabelField(string) 文本標簽 EditorGUILayout.SelectableLabel(string); 選擇標簽 EditorGUILayout.Space(); 空一行
1)首先在Editor文件中新建腳本LabelWindow.cs 文件內容如下:
-----------------------------數字輸入框------------------------
數字輸入 EditorGUILayout.IntField(this.mIntVal); 整數輸入 EditorGUILayout.FloatField(this.mFloatVal); 浮點數輸入
1)首先在Editor文件夾中加入腳本Numberwindow.cs,文件內容為:
-----------------------------滾動條------------------------
EditorGUILayout.Slider(...) 浮點數滾動條
EditorGUILayout.IntSlider(...)整數滾動條
EditorGUILayout.MinMaxSlider(...)
1)首先在Editor文件夾下新建一個腳本ScrollWindow.cs,腳本內容為:
-----------------------------位置大小輸入字段------------------------
位置字段: EditorGUILayout.Vector2Field(string, Vector2) 二維坐標 EditorGUILayout.Vector3Field(string,Vector3); 三維坐標 EditorGuILayout.Vector4Field(string,Vector4);四維坐標 EditorGUILayout.RectFiled(Rect); 矩陣 EditorGUILayout.BoundsFiled();距離
1)首先在Editor文件夾下新建腳本PositionWindow.cs ,腳本內容如下:
-----------------------------選擇字段------------------------
選擇字段: EditorGUILayout.Popup(int, string[]); 字符串選擇,返回字符串數組下標 EditorGUILayout.IntPopup(int,int[],string[]) 字符串選擇,返回字符串對應下標的整形數組值 EditorGUILayout.EnumPopup(Enum) 枚舉選擇,返回枚舉
1)首先在Editor文件夾下新建文件SelectWindow.cs ,腳本內容為:
-----------------------------標簽、層、對象選擇字段------------------------
1)首先在Editor文件夾下新建一個腳本TagLayer.cs,腳本的內容為:
-----------------------------單選選擇字段-----------------
1)首先在Editor文件夾下新建ToggleWindow.cs腳本文件,腳本內容:
-----------------------------字段分組-----------------
1)首先在Editor文件夾下新建腳本文件GroupWindow,腳本內容為:
-----------------------------其他字段-----------------
1)首先在Editor文件夾下新建OtherWindow.cs腳本文件,腳本內容為:
