比如经常在三方插件中看到如下在Inspector中的样式

这种对特别是要做编辑序列化数据脚本操作很友好,但是这个是如何实现呢?比如我们要创建一个保存序列化的npc基本数据,名字(Name),性别(Sex),年龄(Age),需求有了,下面就简单演示如何创建这类脚本。

1,创建元数据类脚本,在unity中添加如下脚本

 using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class NpcData : MonoBehaviour
{ [SerializeField] public string Name;
[SerializeField] public bool IsMale;
[SerializeField] public int Age;
}

给物体挂上这个脚本看看

虽然这样能用,但是不太美观,特别是有新的需求,比如勾选IsMale后,我想把Age这个选项隐藏调,该怎么做呢

在unity中建立一个Editor文件夹,并添加如下脚本:

 using UnityEditor;

 [CustomEditor(typeof(NpcData))] //指定要编辑的脚本对象
public class NpcInspector : Editor
{ NpcData m_Target; //重写OnInspectorGUI方法,当激活此面板区域时调用
public override void OnInspectorGUI()
{
//加入此句,不影响原在Inspector绘制的元素
//base.OnInspectorGUI(); //获取指定脚本对象
m_Target = target as NpcData; m_Target.Name = EditorGUILayout.TextField("Name", m_Target.Name);
m_Target.IsMale = EditorGUILayout.Toggle("IsMale", m_Target.IsMale);
if (!m_Target.IsMale)
{
//非勾选IsMale,绘制Age选项
m_Target.Age = EditorGUILayout.IntField("Age", m_Target.Age);
}
}
}

这个脚本除了需要放在Editor目录下,只要在[CustomEditor(typeof(PrefabsTools))]中指定好对象脚本,不需要做其他操作,下面来看看脚本NpcData在Inspector中的样子

UnityInspector显示扩展的更多相关文章

  1. ecshop后台管理显示扩展分类

    ecshop 后台商品列表默认只显示分类下的商品,而不显示扩展分类中的商品,以下是我个人给出的解决方法: 打开admin/includes/lib_goods.php 第839行左右的位置 可以看到如 ...

  2. 设置Ubuntu右侧显示扩展屏幕。。。

    sudo xrandr --output VGA1 --right-of LVDS1 --auto

  3. asp.net扩展名不显示并获得URL值

    由vs2013新建"web窗体应用程序"的网站,URL不显示扩展名.那今天就实现该功能 1.首先打开vs2013>新建项目>如下图选择 2.选择项目右击>管理Nu ...

  4. PHP.37-TP框架商城应用实例-后台13-商品管理-扩展分类的添加、显示【数据分组】、搜索分类【多对多】

    商品扩展分类 需求:一件商品能有多个扩展分类,搜索任何一个分类都能搜出该商品 建表[扩展分类表] drop table if exists p39_goods_cat; create table p3 ...

  5. NeHe OpenGL教程 第二十四课:扩展

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  6. 从字符串总分离文件路径、命名、扩展名,Substring(),LastIndexOf()的使用;替换某一类字符串,Replace()的用法

    一:从字符串总分离文件路径.命名.扩展名,上图 二:代码 using System; using System.Collections.Generic; using System.ComponentM ...

  7. SQL Server -查看数据库扩展属性

    1.fn_listextendedproperty 函数可以基于对象类型显示单个数据库对象或数据库中所有对象的扩展属性.例如,可以返回表或表中所有列的扩展属性. A.下面的示例显示了数据库本身设置的所 ...

  8. Qt4----子例化QDialog(可扩展对话框的使用)

    1.linux下安装Qt4请参考如下博文: Qt4在linux下的安装 2.Qt4工程的创建请参考如下博文: Qt4创建工程的几种方法:linux系统 3.可扩展对话框 通过纯代码的形式,建立工程.点 ...

  9. 资金平台交易明细扩展开发-DEP

    前言 支持农垦项目中,需要增加抓取银行接口传输数据,需求有两点:一是银企平台前置机需要增加扩展中行.农行数据字段.(代理账号.代理账户名称.代理银行) 二是EAS资金模块中的交易明细查询列表界面能够显 ...

随机推荐

  1. Hadoop系列004-Hadoop运行模式(上)

    title: Hadoop系列004-Hadoop运行模式(上) date: 2018-11-20 14:27:00 updated: 2018-11-20 14:27:00 categories: ...

  2. InkImageDataSetGenerator-开源一个可用于机器学习的书写轨迹图片生成的小工具

    这是一个简单易用的图片数据集生成小工具,基于OpenCV和UWP Ink API,它可以根据指定的手写轨迹生成一系列各个角度的图片.每张图片的尺寸和总体数量都是可以指定的,均存放在统一的生成目录中.h ...

  3. IdentityServer4 中文文档与实战

    写在前面 写于2018.9.12 我研究 IdentityServer4 是从.net core 1.1的时候开始的,那时候国内的中文资料比较少,我都是按照官方文档来研究的,整理成了笔记.这个系列文档 ...

  4. SpringBoot整合Swagger2,再也不用维护接口文档了!

    前后端分离后,维护接口文档基本上是必不可少的工作.一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了.当然这是一种非常理想的状态,实际开发中却很 ...

  5. Redis学习笔记~分布锁的使用

    回到目录 分布锁主要用在多进程共同访问同一个资源时候,用来保持同一时间段只能有一个进程执行,同时避免了并发冲突的出现,这在很多场景都会用到,像秒杀库存,抽奖库存,多操作者处理一家公司等. void T ...

  6. Centos7 Jenkins日志过大

    df 查看 占用 [root@instance-ncwnnt0e /]# df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs ...

  7. 关于C#的new与override

    先放出来两个基类和派生类: public class BaseClass { public virtual void Method1(string desc) { Console.WriteLine( ...

  8. Java笔记(day1~day6)

    绪论:   Java版本区别:J2EE (企业版)                  J2SE(标准版)              J2ME(小型版) Java特性:跨平台 JVM.JRE.JDK介绍 ...

  9. elasticsearch health yellow

    csdn博客地址(已测试过):https://blog.csdn.net/yangyangrenren/article/details/81100836 官方地址:https://www.elasti ...

  10. Git配置用户信息和SSH

    安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功! 1.配置用户信息 在命令行输入: $ git config --global ...