Unity编辑器扩展

xiaoxiao2021-02-28  118

Unity编辑器扩展

using UnityEditor; //作为编辑器时的引用 1、添加菜单,需要静态方法 [MenuItem("Tools/Test")] static void Test() { } 2、菜单的分类 [MenuItem("Tools/Test1", true, 1)] (2)是否验证 static bool Test1() { true //可以使用 false //不可使用 } [MenuItem("Tools/Test1", false, 1)] (3)优先级,默认为1000,相差11可以加一条线进行分类 static void Test1() { } 3、组件增加右键菜单(脚本) [MenuItem("CONTEXT/PlayerHealth/Init")] //1-固定 2-脚本名 3-按键名 static void Test(MenuCommand cmd) //MenuCommand是当前正在操作的组件 { PlayerHealth health = (PlayerHealth) cmd.context;//得到脚本 } [ContextMenuItem("按键名", "执行方法")] public int index = 0; [ContextMenu("名字")] //可编辑脚本使用 void SetColor() { } 4、可撤销操作 Undo类,使用Undo操作的选中物体,可以进入撤销 5、增加快捷键 [MenuItem("Tools/test2 _t")] // %=ctrl #=shift &=alt 6、对话框 public class Tools : ScriptableWizard { [MenuItem("Tools/Win")] static void Creat() { ScriptableWizard.DisplayWizard<Tools>("哈哈哈", "Change Value", "第二个按键的名字"); } public int hp = 100; public string name = "哈"; void OnWizardCreate() //监听create按键的点击 { Undo.RecordObject(hp,"hp");//记录修改前的,可以用来撤销 Debug.Log("11111"); } void OnWizardOtherButton()//监听 第二个按键的名字 { } ShowNotification(new GUIContent("1111111"));//弹框 //窗口弹出、值修改调用 void OnWizardUpdate() { helpString = "帮助信息"; errorString = "错误信息"; } //选择物体数量改变调用 void OnSelectionChange() { } } 8、显视进度条 EditorUtility类   工具类 EditorUtility.DisplayProgressBar("","",0.1f);     //标题    提示信息    当前进度 EditorUtility.ClearProgressBar();   //隐藏进度条 EditorUtility.DisplayCancelableProgressBar("", "", 0.1f);   //可以取消的进度条 9、自定义窗口 public class MyWindow : EditorWindow {     [MenuItem("Window/Show MyWindow")]     static void ShowMyWindow()     {         MyWindow window = EditorWindow.GetWindow<MyWindow>();   //得到这个窗口类         window.Show();     }     void OnGUI()    //使用OnGUI可以在自定义窗口中绘制     {         GUILayout.Label("");       //绘制类         EditorGUILayout         Undo.RegisterCompleteObjectUndo();      //记录操作  1-被操作的物体  2-名字,操作记录名    主要做撤销     } }

转载请注明原文地址: https://www.6miu.com/read-37072.html

最新回复(0)