UnityInspector显示扩展
比如经常在三方插件中看到如下在Inspector中的样式
这种对特别是要做编辑序列化数据脚本操作很友好,但是这个是如何实现呢?比如我们要创建一个保存序列化的npc基本数据,名字(Name),性别(Sex),年龄(Age),需求有了,下面就简单演示如何创建这类脚本。
1,创建元数据类脚本,在unity中添加如下脚本
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 5 public class NpcData : MonoBehaviour 6 { 7 8 [SerializeField] public string Name; 9 [SerializeField] public bool IsMale; 10 [SerializeField] public int Age; 11 }
给物体挂上这个脚本看看
虽然这样能用,但是不太美观,特别是有新的需求,比如勾选IsMale后,我想把Age这个选项隐藏调,该怎么做呢
在unity中建立一个Editor文件夹,并添加如下脚本:
1 using UnityEditor; 2 3 [CustomEditor(typeof(NpcData))] //指定要编辑的脚本对象 4 public class NpcInspector : Editor 5 { 6 7 NpcData m_Target; 8 9 //重写OnInspectorGUI方法,当激活此面板区域时调用 10 public override void OnInspectorGUI() 11 { 12 //加入此句,不影响原在Inspector绘制的元素 13 //base.OnInspectorGUI(); 14 15 //获取指定脚本对象 16 m_Target = target as NpcData; 17 18 m_Target.Name = EditorGUILayout.TextField("Name", m_Target.Name); 19 m_Target.IsMale = EditorGUILayout.Toggle("IsMale", m_Target.IsMale); 20 if (!m_Target.IsMale) 21 { 22 //非勾选IsMale,绘制Age选项 23 m_Target.Age = EditorGUILayout.IntField("Age", m_Target.Age); 24 } 25 } 26 }
这个脚本除了需要放在Editor目录下,只要在[CustomEditor(typeof(PrefabsTools))]中指定好对象脚本,不需要做其他操作,下面来看看脚本NpcData在Inspector中的样子
标签:
UnityEditor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!