Unity编辑器扩展

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

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

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

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

使用MenuItem添加菜单栏按钮

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

using UnityEditor;
using UnityEngine;

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

Unity编辑器扩展第1张

分栏: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");
    }
}

Unity编辑器扩展第2张

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

注意:格式固定 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");
    }
}

Unity编辑器扩展第3张

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

Unity编辑器扩展第4张

免责声明:文章转载自《Unity编辑器扩展》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ASP.NET MVC5(五):身份验证、授权关于hive当中的窗口分析函数总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

TOMCAT原理详解及请求过程(转)

https://www.cnblogs.com/hggen/p/6264475.html TOMCAT原理详解及请求过程 Tomcat: Tomcat是一个JSP/Servlet容器。其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。 Tomcat目录: tomcat|---bin:...

GameFramework 学习

https://gameframework.cn/ Config DataNode DataTable Debugger Download Entity Event FSM Localization Network ObjectPool Procedure ReferencePool Resource Scene Setting Sound UI WebR...

如何扩展ArcGIS中的元数据编辑器

http://www.esrichina-bj.cn/old../library/arcnews16/Metadata.htmhttp://www.esrichina-bj.cn/old../library/arcnews13/new13-MATEDATA.htm http://resources.esri.com/help/9.3/ArcGISDeskt...

ASP.NET网站入侵第二波(LeaRun.信息化快速开发框架 已被笔者拿下)

笔者小学文化,语言组织能力差,写的不通的地方请大家将就着看,不喜勿喷。     上篇我讲了如何在上传文件中入侵服务器,這次我们稍微多讲一点。    还是先讲下流程: 1、上传代码页面  我上传的是ashx页面。 2、用ashx页面已文本形式显示web.Config的内容 得到数据库连接, 3、用ashx在网站根目录输出vbs脚本(创建Windows账户脚本...

权限认证机制

一、Form表单认证 之前的项目以MVC为主,采用的是from表单认证,Forms认证示意图如下: HTTP是一个无状态的协议,WEB服务器在处理所有传入HTTP请求时,根本就不知道某个请求是否是一个用户的第一次请求与后续请求,或者是另一个用户的请求。 WEB服务器每次在处理请求时,都会按照用户所访问的资源所对应的处理代码,从头到尾执行一遍,然后输出响应...

Unity3D 学习教程 12 C# 发射炮弹

建立一个炮弹 一个球体 双击脚本 进入编辑器 1 using UnityEngine; 2 using System.Collections; 3 4 public class acc : MonoBehaviour { 5 6 // Use this for initialization 7 public Trans...