• 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中的样子

  • 相关阅读:
    CentOS下MySQL的彻底卸载
    cent 7.0 安装mysql
    centos 安装mysql Package: akonadi-mysql-1.9.2-4.el7.x86_64 (@anaconda)
    使用注解配置SQL映射器
    bean
    转:最简日志打印规范
    快速搭建sonar代码质量管理平台
    (转)Where与Having的总结
    一个问题,日后会写为什么贴出来
    hive Tutorial
  • 原文地址:https://www.cnblogs.com/Jean90/p/10066409.html
Copyright © 2020-2023  润新知