zoukankan      html  css  js  c++  java
  • Unity编辑器扩展

    Unity引擎除了提供大部分通用的功能以外,还为开发者提供了编辑器的扩展开发接口,开发者可以编写编辑器脚本,打造适合自己的游戏辅助工具和定制的编辑器。

    以前脚本开发中使用的一些API和组件类,都属于运行时类,Unity还提供了编辑器类用于编辑器的扩展开发,包括编辑器环境下使用的GUI类,编辑器工具类,编辑器操作类(例如拖放、撤销操作)等。

    注意:编辑器扩展的代码必须放在“Editor”文件夹下,该文件夹下的代码在游戏运行过程中不会执行,只能在编辑器模式下操作使用。该文件夹的代码,以及其它任何资源,在打包的时候都不会包括进去。

    使用MenuItem添加菜单栏按钮

    默认:MenuItem("路径+按钮名")     使用默认参数,添加的按钮默认放在最下面

    using UnityEditor;
    using UnityEngine;
    
    public class Tools {
        [MenuItem("Tools/test")]
        static void Test()
        {
            Debug.Log("test");
        }
    }
    

    分栏:MenuItem("路径+按钮名",false,层级)

    注意:第二个参数写false,第三个参数为层级,越小的越在上面。如果需要分栏效果,那么两个按钮之间至少间隔为11

    using UnityEditor;
    using UnityEngine;
    
    public class Tools {
        [MenuItem("Tools/test1",false,1)]
        static void Test1()
        {
            Debug.Log("test1");
        }
    
        [MenuItem("Tools/test2",false,2)]
        static void Test2()
        {
            Debug.Log("test2");
        }
    
        [MenuItem("Tools/test3",false,13)]
        static void Test3()
        {
            Debug.Log("test3");
        }
    }
    

     

    给组件的右键菜单栏添加按钮

    注意:格式固定  MenuItem("CONTEXT/组件名/按钮名")

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEditor;
    
    public class PlayerEditor {
    
        [MenuItem("CONTEXT/PlayerHealth/InitHealthAndSpeed")]// CONTEXT 组件名 按钮名
        static void InitHealthAndSpeed()
        {
            Debug.Log("Init");
        }
    }
    

     

    MenuCommand的使用:使用MenuCommand可以获取到当前操作的组件

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEditor;
    
    public class PlayerEditor {
    
        [MenuItem("CONTEXT/PlayerHealth/InitHealthAndSpeed")]// CONTEXT 组件名 按钮名
        static void InitHealthAndSpeed(MenuCommand cmd) //MenuCommand是当前正在操作的组件
        {
            //Debug.Log(cmd.context.GetType().FullName);
            CompleteProject.PlayerHealth health = cmd.context as CompleteProject.PlayerHealth;
            health.startingHealth = 200;
            health.flashSpeed = 10;
        }
    }
    

  • 相关阅读:
    HDU2066一个人的旅行(dijkstra)
    HDU2544最短路(dijkstra)
    iOS 入门 界面UI 界面跳转
    Lua 函数作为参数传递时的注意事项
    成为Lua高手之metatable
    Android 之 声音捕捉
    Lua 多变长参数传递之三点(...)
    iOS之声音捕捉
    iOS ZXing 二维码模块的加入
    Windows 7 系统的系统界面语言切换成风骚的英文
  • 原文地址:https://www.cnblogs.com/lmx282110xxx/p/10798658.html
Copyright © 2011-2022 走看看