Unity3D之如何擴展腳本的Inspector面板


關於擴展編輯器
Unity給我們提供了很好的可視化編程環境,但對於我們有些更懶蛋的程序猿來說,還不夠方便。所以Unity也給我們提供了很友好的擴展方式。
今天來說一下如何自定義一個腳本的inspector面板。
 
unity中所有編輯器相關的腳本,都放在Editor文件夾,所以建一個先。
假設有個腳本ABC.cs 我們想自定義它的Inspector面板。
 
現在上代碼:
 
         
// 要自定義的腳本
public class ABC : Monobehaviour{
             public bool a;
             public float b;
             public int c;
}

// 自定義編輯器腳本
[CustomEditor(typeof(ABC)), CanEditorMutipleObjects]
// 這意思就是此腳本為ABC腳本的編輯器腳本,CanEditorMutipleObjects 顧名思義,可以同時編輯多個物體

public class ABC_Editor : Editor{
           // 這里用簡單的顯示控制來讓大家理解自定義編輯器的流程
           public static SerializedProperty a_prop, b_prop, c_prop;

           void OnEnable(){
                  // 三個在ABC.cs中定義的屬性
                 a_prop = serializedObject.FindProperty("a");    
                 b_prop = serializedObject.FindProperty("b");
                 c_prop = serializedObject.FindProperty("c");    
           }

           public override void OnInspectorGUI(){
                    // 更新編輯器顯示的序列化屬性
                     serializedObject.Update();

                     //  沒什么說的, 顯示屬性
                     EditorGUILayout.PropertyField(a_prop);

                      //  獲取a的序列化值
                     bool display = a_prop.boolValue;
                     if(display){
                            EditorGUILayout.PropertyField(b_prop);
                            float weight = b_prop.floatValue;
                            if(weight > 0.5f)
                                    EditorGUILayout.PropertyField(c_prop);
                     }
 
                       // 接受序列化賦值
                     serializedObject.ApplyModifiedProperties();
           }
}
// 至此,一個簡單的變量控制相互顯示的例子就完成了。
// 試一下吧!

 


免責聲明!

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



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