拓展Unity3D編輯器
阿新 • • 發佈:2018-12-14
/*** * * 編輯器建立新視窗,並設定窗口布局 * * * * * */ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class EditorWindowTest : EditorWindow { [MenuItem("MyMenu/OpenWindow")] static void OpenWindow() { Rect wr = new Rect(0, 0, 500, 500); //建立視窗 EditorWindowTest window = (EditorWindowTest)EditorWindow.GetWindowWithRect(typeof(EditorWindowTest), wr, true, "測試建立視窗"); window.Show(); } private string text; //輸入文字的內容 private Texture texture; //選擇貼圖的物件 public void Awake() { texture = Resources.Load("timg (3)") as Texture; //在資源中讀取一張貼圖 } //繪製視窗時呼叫 void OnGUI() { text = EditorGUILayout.TextField("輸入文字:", text); //輸入框控制元件 if (GUILayout.Button("開啟通知", GUILayout.Width(200))) { //開啟一個通知欄 this.ShowNotification(new GUIContent("我是菜菜")); } if (GUILayout.Button("關閉通知", GUILayout.Width(200))) { //關閉通知欄 this.RemoveNotification(); } //文字框顯示滑鼠在視窗的位置 EditorGUILayout.LabelField("滑鼠在視窗的位置", Event.current.mousePosition.ToString()); //選擇貼圖 texture = EditorGUILayout.ObjectField("新增貼圖", texture, typeof(Texture), true) as Texture; if (GUILayout.Button("關閉視窗", GUILayout.Width(200))) { this.Close(); } } void Update() { } void OnFocus() { Debug.Log("當視窗獲得焦點是呼叫一次"); } void OnLostFocus() { Debug.Log("當視窗丟失焦點時呼叫一次"); } void OnHierarchyChange() { Debug.Log("當Hierarchy檢視中的任何物件發生改變時呼叫一次"); } void OnProjectChange() { Debug.Log("當Project檢視中的資源發生改變時呼叫一次"); } void OnInspectorUpdate() { this.Repaint(); } void OnSelectionChange() { //當視窗處於開啟狀態,並且在Hierarchy檢視中選擇某遊戲物件時呼叫 foreach (Transform t in Selection.transforms) { //有可能是多選,這裡開啟一個迴圈列印選中游戲物件的名稱 Debug.Log("OnSelectionChange" + t.name); } } void OnDestroy() { Debug.Log("當視窗關閉時呼叫"); } }