当前位置: 首页 > article >正文

【Unity小知识】Editor编写常用方法汇总

        汇总一些Unity Editor开发的常用方法和实现方式,会持续更新。

添加自定义菜单栏方法

using UnityEngine;
using UnityEditor;

public class EditorTools : EditorWindow
{
    [MenuItem("EditorTools/自定义的编辑器方法")]
    public static void CustomEditroFunction()
    {
        Debug.Log("Here is your code...");
    }
}

如图一,添加自定义的菜单栏需要使用UnityEditor的命名空间,我们自定义的EditorTools类需要继承EditorWindow类。然后就是定义菜单栏点击后所执行的具体函数CustomEditroFunction,这里需要注意的是函数需要是静态函数,需要增加static关键字。MenuItem方法则是定义菜单栏的路径,菜单栏路径可以采用中文。图二则是自定义菜单栏的效果。

EditorWindow类文档连接:https://docs.unity3d.com/cn/2022.2/ScriptReference/EditorWindow.html

添加Inspector中脚本自定义方法

using UnityEngine;
using UnityEngine.UI;
using UnityEditor;

[CustomEditor(typeof(Text), true)]
public class TextEditor : Editor
{
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();
        CustomTextFunction();
    }

    private void CustomTextFunction()
    {
        if (GUILayout.Button("清空内容"))
        {
            Text text = (Text)target;
            text.text = string.Empty;
        }
    }
}

这里我们为Unity原有的Text脚本增加功能按钮,添加自定义功能。

如图一,首先还是需要使用UnityEditor命名空间,自定义类TextEditor继承自Editor。通过覆写OnInspectorGUI方法实现Inspector中脚本的绘制,DrawDefaultInspector为绘制默认视图。接下来CustomTextFunction则是我们自定义的部分,通过GUILayout.Button("清空内容")方法绘制自定义按钮,if语句中则是点击按钮后的自定义功能,这里示例的则是清除了Text内容。实际效果如图二。

在示例代码中需要注意的是,[CustomEditor(typeof(Text), true)]指定了Inspector自定义脚本的类型,会为指定的自定义脚本添加功能。基类Editor包含成员target,通过target可以获取指定的脚本对象。

Editor类文档连接: https://docs.unity3d.com/cn/2022.2/ScriptReference/Editor.html


http://www.kler.cn/a/548.html

相关文章:

  • 如何在 Ubuntu 22.04 上部署 Nginx 并优化以应对高流量网站教程
  • Python 中的 `iter` 函数
  • Visual Studio 中增加的AI功能
  • 如何进行有效沟通?
  • 【每日学点鸿蒙知识】ets匿名类、获取控件坐标、Web显示iframe标签、软键盘导致上移、改变Text的背景色
  • Java 同步锁性能的最佳实践:从理论到实践的完整指南
  • 使用python控制摄像头
  • Java——Map和Set的使用
  • IDEA常用插件列表
  • 有什么比较好的bug管理工具?5款热门工具推荐
  • cmd命令教程
  • Java Web 实战 13 - 多线程进阶之 synchronized 原理以及 JUC 问题
  • [蓝桥杯单片机]——八到十一届初赛决赛客观题
  • 九种跨域方式实现原理(完整版)
  • 【Java并发编程】线程安全-CAS原理
  • 【JavaSE】类和对象(上)
  • 【Linux】项目自动化构建工具——make/Makefile
  • 如何从 MySQL 读取 100w 数据进行处理
  • 虹科干货|Redis企业版数据库为企业「数据安全」叠加最强Buff!
  • 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题——中间人攻击渗透测试解析(详细)
  • 二分查找创新性总结
  • Centos 安装mysql8(YUM方式)
  • JS高级知识总结
  • ChatGPT解开了我一直以来对自动化测试的疑惑
  • jQuery《一篇搞定》
  • MongoDB数据库从入门到精通系列之八:调整oplog大小