• 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;
        }
    }
    

  • 相关阅读:
    java中获取服务器的IP和端口
    springboot项目 配置https
    vue+element+upload实现头像上传
    js指定日期时间加一天 ,判断指定时间是否为周末
    在内网中 vue项目添加ECharts图表插件
    vue+element树组件 实现树懒加载
    iview 表格随着更改刷新
    vue设置input不可编辑切换
    .Net程序员学用Oracle系列(3):数据库编程规范
    .Net程序员学用Oracle系列(2):准备测试环境
  • 原文地址:https://www.cnblogs.com/lmx282110xxx/p/10798658.html
Copyright © 2020-2023  润新知