日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity编辑器扩展-基本界面编写

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity编辑器扩展-基本界面编写 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.在編輯器上增加一個MenuItem

先進行第一步,給編輯器加個菜單,通過[MenuItem("AXX/BXX")]就可以在編輯器的上邊菜單欄增加一個下拉菜單AXX,并增加一個按鈕BXX。只要把這句話寫在我們定義的函數上方就可以,然后我們點擊這個按鈕,就會調用這個我們自定義的函數。不過有一點一定要記住,這個函數要是static的!(想一想就可以知道是為什么,編輯器沒有必要搞粗一個對象之類的,因為我們要調用的只是這個方法)例如:

using UnityEngine; using UnityEditor; using System.Collections;public class EditorTest {[MenuItem("MyTools/EditorTest")]public static void ConfigDialog(){Debug.Log("EditorTest ToolButton is pressed!");} }

我們的編輯器就多了這樣的一個工具選項MyTools,點擊出現了EditorTest下拉菜單,再點擊按鈕就會輸出Log了,如下圖所示:

二.創建一個對話框

如果我們嫌這個一個下拉菜單不爽,那我們就可以創建一個對話框,然后就可以在對話框里放更多的按鈕或者一些工具條來調節相關內容,下面看一下在Unity編輯器中對話框的創建以及使用。 using UnityEngine; using UnityEditor; using System.Collections;//typeof(編輯器類名),繼承EditorWindow [CustomEditor(typeof(EditorTest))] public class EditorTest : EditorWindow {//通過MenuItem按鈕來創建這樣的一個對話框[MenuItem("MyTools/EditorTest")]public static void ConfigDialog(){//GetWindow創建EditorWindow.GetWindow(typeof(EditorTest));}public UnityEngine.Object go = null;//對話框中的各種內容通過OnGUI函數來設置void OnGUI(){//LabelGUILayout.Label("Label Test", EditorStyles.boldLabel);//通過EditorGUILayout.ObjectField可以接受Object類型的參數進行相關操作go = EditorGUILayout.ObjectField(go, typeof(UnityEngine.Object), true);//Buttonif (GUILayout.Button("Button Test")){Debug.Log(go.name);}}} 結果如下:
通過這樣的一個腳本,我們就可以在Unity中創建一個對話框,然后再在對話框里進行進一步的設置。

三.擴展Inspector面板

這一部分比較重要,也是我們最經常使用的部分。

1.ContextMenu

比如我們寫了個腳本,但是有一些函數需要調用觸發,測試的時候又不方便,一種方法是重寫MonoBehaviour類的OnGUI方法,但是這種方法也比較笨,要寫好多代碼,除非真機調試的時候,沒有辦法才這樣做,我們可以通過一種更簡單的方式來實現。 我們如果想直接調用我們繼承MonoBehaviour的類的某個函數,只需要在函數上加上[ContextMenu(“函數名稱”)]即可: [ContextMenu("Context Menu Test")]void OnTest(){Debug.Log("Context Menu is called");} 結果如下:
通過ContextMenu,我們可以更方便地測試我們的腳本,隨時通過編輯器調用我們的函數,而不用再去其他外層函數。

2.自定義inspector面板

有時,我們需要更加方便美術或者策劃來編輯對象屬性,這時候,我們就可以通過自定義Inspector面板來進行控制: using UnityEngine; using UnityEditor; using System.Collections;//typeof中參數即為我們需要定義Inspector面板的組件 [CustomEditor(typeof(CustomEditorTest))] public class TestCustomEditor : Editor {CustomEditorTest script;public override void OnInspectorGUI(){base.OnInspectorGUI();//將target轉化為我們需要的腳本script = target as CustomEditorTest;//增加一個按鈕if (GUILayout.Button("Test Button")){//可以直接訪問CustomEditorTest類的內容script.Test(script.num);}} } 結果:
?

四.編輯器插件常用函數

1.AssetDatabase.CreateAsset可以幫住你從資源目錄中創建一個資源實例。
2.Selection.activeObject返回當前選中的對象。?
3.EditorGUIUtility.PingObject用來實現在Project窗口中點擊某一項的操作。
4.Editor.Repaint用來重繪界面所有的控件。
5.XXXImporter用來設置某種資源的具體導入設置(例如在某些情況下你需要設置導入的貼圖為可讀的)。?
6.EditorUtility.UnloadUnusedAssets用于釋放沒有使用的資源,避免你的插件產生內存泄漏。?
7.Event.Use用來標記事件已經被處理結束了。?
8.EditorUtility.SetDirty用來通知編輯器數據已被修改,這樣在下次保存時新的數據將被存儲。

六.參考鏈接

Unity3D編輯器插件編寫_脫莫柔的博客-CSDN博客

Unity3D 場景編輯器擴展學習筆記-Editor_kun1234567的博客-CSDN博客_unity 場景編輯器

【風宇沖】Unity3d編輯器拓展_風宇沖_新浪博客

總結

以上是生活随笔為你收集整理的Unity编辑器扩展-基本界面编写的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。