首页 > 代码库 > Unity编辑器扩展chapter1
Unity编辑器扩展chapter1
Unity编辑器扩展chapter1
unity通过提供EditorScript API 的方式为我们提供了方便强大的编辑器扩展途径。学好这一部分可以使我们学会编写一些工具来提高效率,甚至可以自制一些小的插件应用的项目工程中去,达到复用的目的。今天首先创建一个新场景生成的菜单项,生成的场景已经绑定好需要的游戏对象及脚本。
Tips:1.官方API
2.编辑器扩展脚本都需放在Editor文件夹下,Editor的层级和数目没有要求
EditorUtil.cs :编辑器扩展类,向外部提供编辑器扩展方法。
1 using UnityEngine; 2 using System.Collections; 3 using UnityEditor; 4 using UnityEditor.SceneManagement; 5 6 namespace RunAndJump.LevelCreator //为防止类名冲突,使用namespace时一个好的解决方案 7 { 8 public class EditorUtil 9 { 10 11 //创建新场景 12 public static void NewScene() 13 { 14 //该方法后续过时,被下面方法替代:EditorApplication.SaveCurrentSceneIfUserWantsTo(); 15 EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo();//当前场景有未保存的东西是,弹出对话框提醒是否保存当前场景 16 //该方法后续过时,被下面方法替代:EditorApplication.NewScene(); 17 EditorSceneManager.NewScene(NewSceneSetup.EmptyScene); 18 } 19 20 21 //清空场景 22 public static void CleanScene() 23 { 24 GameObject[] allObjects = Object.FindObjectsOfType<GameObject>(); 25 26 foreach (GameObject go in allObjects) 27 { 28 GameObject.DestroyImmediate(go); 29 } 30 } 31 32 //创建新关卡 33 public static void NewLevel() 34 { 35 NewScene(); 36 CleanScene(); 37 38 //可以在创建新关卡时添加上必要的游戏对象 39 //add something... 40 41 GameObject levelGo = new GameObject("Level"); 42 levelGo.transform.position=Vector3.zero; 43 levelGo.AddComponent<Level>(); 44 45 } 46 } 47 }
MenuItems.cs:菜单项控制类,负责在菜单项中调用编辑器方法
1 using UnityEngine; 2 using System.Collections; 3 using UnityEditor; 4 5 namespace RunAndJump.LevelCreator 6 { 7 8 //菜单项管理类,用来控制扩展方法在菜单项中显示 9 public class MenuItems 10 { 11 [MenuItem("Tools/LevelCreator/NewLevelScene %q") ] 12 private static void NewLevel() 13 { 14 EditorUtil.NewLevel(); 15 } 16 } 17 }
效果:
Unity编辑器扩展chapter1
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。