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

【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.lryc.cn/news/41225.html

相关文章:

  • 【数据仓库-4】-- 提取、转换、装载(ETL)
  • 【DBC专题】-12-不同类型报文(应用/诊断/网关/测量标定)在DBC中配置,以及在Autosar各模块间的信号数据流向
  • 【Linux】进程的基础概念 进程的相关操作 进程的状态
  • 【小猫爪】AUTOSAR学习笔记06-Communication Stack之ComM模块
  • BP插件开发(JAVA)
  • 【Zookeeper】介绍与配置
  • chrome快捷键
  • 手搓string类
  • 小白学Pytorch系列--Torch API (7)
  • 函数(上)——“Python”
  • ChatGPT说:如何利用ChatGPT变现?躺着赚钱不是梦。
  • 4.网络爬虫—Post请求(实战演示)
  • 【视频文稿】车载Android应用开发与分析 - 开发系统应用
  • Scala流程控制
  • 人脸活体检测系统(Python+YOLOv5深度学习模型+清新界面)
  • prometheus03-如何导出prometheus指标
  • Linux驱动开发——串口设备驱动
  • LeetCode--缺失的第一个正数(41)和 接雨水(42)
  • java源码阅读---ReentrantLock源码解析
  • OpenCv + Qt5.12.2 文字识别
  • 网络作业1【计算机网络】
  • 常见背包问题
  • 【python】python编译器以及安装
  • Effective C++快速复习
  • 【华为OD机试真题JAVA】绘图机器的绘图问题
  • GPT-4最震撼我的一点
  • LeetCode-复制带随机指针的链表
  • 如何在Unity中实现AStar寻路算法及地图编辑器
  • 线性代数之矩阵
  • 【个人首测】百度文心一言 VS ChatGPT GPT-4