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

Unity编辑器扩展入门篇 - Unity Inspector自定义脚本菜单

前言

        在开发中,我们时常也需要在自定义脚本的菜单来方便调试和测试,例如给脚本上的变量添加一个描述文本来进行说明其作用,方便协作的开发人员明了其含义。又或者在脚本上添加一个按钮来打印某些参数或者变量的值,方便在调试时进行排查。


创建一个自定义脚本的Inspector UI界面

脚本及覆写脚本界面的类

        首先创建一个基础的脚本,命名为SimpleScriptTool,里面包含一个int型的变量_testValue,代码如下。

public class SimpleScriptTool : MonoBehaviour
{[SerializeField] private int _testValue;
}

        创建一个复写脚本Inspector UI界面的脚本,命名为SimpleScriptToolEditor,这个脚本需要继承Editor类,用来覆写它的Inspector UI界面。

[CustomEditor(typeof(SimpleScriptTool))]
public class SimpleScriptToolEditor : Editor
{//添加覆写Inspector UI的代码
}

        为了可以访问SimpleScriptTool里面的变量,我们需要用到SerializedProperty这个类,去读取我们需要访问的_testValue这个变量。

private SerializedProperty _testValue;private void OnEnable()
{_testValue = serializedObject.FindProperty("_testValue");
}

        通过已有的serializedObject变量去找到_testValue的这个变量,并获取它的值。

脚本自定义界面

        要覆写脚本的Inspector UI界面,关键的是需要覆写OnInspectorGUI这个方法。我们可以通过覆写这个方法,并且自己去做一些界面组件绘制来自定义。

自定义脚本界面

        可以添加一个简单的文本描述来说明我们的_testValue是用来做什么的,然后可以添加一个按钮来打印_testValue的值并输出到控制台显示,代码如下。

public override void OnInspectorGUI()
{serializedObject.Update();EditorGUILayout.LabelField("This is a test value.");EditorGUILayout.Space();EditorGUILayout.PropertyField(_testValue);if (GUILayout.Button("Debug Test Value")){Debug.Log($"Test Value = {_testValue.intValue}");}serializedObject.ApplyModifiedProperties();
}

        LabelField对应的是文本描述,Space是指上下UI组件有个空格的距离,GUILayout.Button即绘制一个按钮,括号内表示要执行的逻辑。当我们点击Debug Test Value按钮时,控制台就会输出_testValue的值。

输出日志
http://www.dtcms.com/a/549921.html

相关文章:

  • Redis(一)——数据类型一
  • 专业网站建设分为8步代注册公司要多少钱
  • 网站建设 网页设计 网站制作南宁哪个网络公司建网站好
  • Xilinx官网评估板链接
  • 【参赛心得】我的 HarmonyOS 开发入门与参赛之路
  • 答题PK小程序:在竞技与学习的夹缝中狂奔
  • 网站书店建设背景wordpress主页删除
  • 非蛋白氨基酸
  • Rust 移动语义(Move Semantics):内存安全的隐形守护者
  • 怎么用flash做网站app 网站 同时做
  • 摄影网站规划设计书建设官网电话号码
  • 性价比高的电磁阀生产厂家
  • WPF编译出现包问题
  • CZ个人持仓不足1%社区BNB做多情绪高涨,平台XBIT展现去中心化理念
  • 查网站的关键词排名吗重庆铜梁网站建设报价
  • STM32中 ESP8266 MQTT ModBus RS482 介绍
  • 代理分佣后台网站开发品牌网站建设制作
  • 网站建设 汇卓湖南做网站 磐石网络引领
  • 网络营销工程师有用吗优化设计七年级上册数学答案
  • 一文读懂计算机网络参考模型(二)
  • ALIGN 和 ROUND_UP 宏的原理与区别详解
  • 河南智慧团建官网企业网站建设优化
  • vue3 以el-icon方式使用iconfont上的图标
  • 便宜好用AIPPT推荐TOP8【2025最新】
  • MySQL8主从数据库复制故障
  • 阿里、腾讯、百度同台拆解AICoding
  • 皋兰县城乡和住房建设局网站金昌市建设局官方网站
  • 网站开发的标准流程室内设计联盟课堂
  • 学习PLC编程与PLC的总线
  • Rust 闭包:定义、捕获(深入理解)