恐怖的6月考试复习月要来了,好久没更博客了,希望这个月结束有一份好的实习,cheer up!
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class Tools { //MenuItem后面引号内是扩展的目录名,1表示优先级不设置默认是1000,优先级相差11会在编辑器那里划根横线表示不是一类 //给菜单添加快捷键 在路径后面跟一个空格然后写要添加的快捷键 //%=Ctrl #=shift &=alt [MenuItem("Tools/Test %q", false ,1)] static void Test() { Debug.Log("测试"); } //CONTEXT是在组件那里扩展编辑器,MenuCommand是获取当前组件 [MenuItem("CONTEXT/PlayerHealth/Init")] static void Init(MenuCommand Com) { Debug.Log(Com.context.name); } //[ContextMenuItem"",""]可以给属性添加右键菜单 } /// <summary> /// 创建类处理弹框批量修改代码 ScriptableWizard 编辑器向导 /// </summary> public class EditorStudy:ScriptableWizard { [MenuItem ("Tools/Test2")] static void Test2() { //定义弹框的名字 ScriptableWizard.DisplayWizard<EditorStudy>("弹框:统一修改属性","change","otherButton"); } //修改的属性 public int Hp = 10; public int EXP = 100; //弹框被创建之前调用 void OnEnable() { Debug.Log("弹框已经被创建"); //读取上次保存的数据 Hp= EditorPrefs.GetInt("HP"); EXP= EditorPrefs.GetInt("EXP"); } /// <summary> /// Create按钮的回调方法,点击按钮执行 方法名是固定的 /// </summary> void OnWizardCreate() { //Selection 对于选中对象的操作 // Undo.RecordObject(Hp, "HPchange"); 可以撤销操作,相当于保留快照 GameObject[] testobject = Selection.gameObjects; Debug.Log("修改完成"); //数据持久化保存 EditorPrefs.SetInt("HP", Hp); EditorPrefs.SetInt("EXP", EXP); } // 选择的物体被修改时调用 void OnWizardUpdate() { } //OtherButton点击不会关闭窗口 void OnWizardOtherButton() { Debug.Log("OtherButton"); ShowNotification(new GUIContent("有值已经被修改了")); } } /// <summary> /// 自定义窗口类 /// </summary> public class CreateWindow:EditorWindow { [MenuItem ("Window/Test3")] static void Test3() { //创建自定义窗口 CreateWindow window = EditorWindow.GetWindow<CreateWindow>(); //显示窗口 window.Show(); } private string name = ""; //绘制方法 void OnGUI() { //绘制文字 GUILayout.Label("自定义窗口"); //绘制输入框 name = GUILayout.TextField(name); //绘制按钮 if(GUILayout .Button("创建游戏物体")) { GameObject go = new GameObject(name); //注册撤销操作 Undo.RegisterCreatedObjectUndo(go, "createGO"); } } }