标签:ora chap immediate collect eve reference idt 游戏 game
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 }
效果:
标签:ora chap immediate collect eve reference idt 游戏 game
原文地址:http://www.cnblogs.com/Firepad-magic/p/6241780.html