zoukankan      html  css  js  c++  java
  • 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 }

    效果:

  • 相关阅读:
    JS offset
    CSS 实现大小写切换
    CSS 选择器的优先级
    JS DOM hasChildNodes的用法
    HTML fieldset和legend标签
    JS this的用法
    js基础之DOM中元素对象的属性方法
    php windows环境 安装 Apache-apollo + phpMQTT 实现发送 MQTT
    php 执行exec() 操作linux 命令
    linux office转换pdf
  • 原文地址:https://www.cnblogs.com/Firepad-magic/p/6241780.html
Copyright © 2011-2022 走看看