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中的樣子

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM