<em id="lwy0s"></em>
      1. <div id="lwy0s"></div>
      2. AutoCAD 3DMAX C語言 Pro/E UG JAVA編程 PHP編程 Maya動畫 Matlab應用 Android
        Photoshop Word Excel flash VB編程 VC編程 Coreldraw SolidWorks A Designer Unity3D
         首頁 > Unity3D

        【Unity C#編程】自定義編輯器(一)

        51自學網 2014-05-24 http://www.40288265.com

        在這一篇Unity C#教程中,將在編輯器中創建一個自定義可視化序列和列表。你將學會:

        這個教程適用于Unity4.3版本或以上。老版本的可以點擊這里here

        自定義列表

        創建測試數據

        Unity默認的列表展示是可用的,但是你也可以選擇自定義列表。具體細節因人而異。所以使用不同的可視化組合是非常有用的。通過給變量添加屬性來具體指定編輯器如何顯示它們。

        我們以完成的自定義數據教程項目開始,或者創建一個新的項目并導入custom-data.unitypackage

        然后創建一個新的測試腳本,命名為ListTester ,其中有些測試序列,并用它制作一個新的預制以及預制實例,這樣我們就能看到它按預期工作了。

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        using UnityEngine;
         
        public class ListTester : MonoBehaviour {
         
        public int[] integers;
         
        public Vector3[] vectors;
         
        public ColorPoint[] colorPoints;
         
        public Transform[] objects;
        }

        新的測試對象,有著寬闊的inspector.

        創建自定義Inspector

        自定義列表首先要為測試組件創建自定義Inspector。創建一個C#腳本,在Editor文件夾中命名為ListTesterInspector ,作為拓展的UnityEditor.Editor,并應用UnityEditor.CustomEditor 屬性,告訴Unity我們想要給組件繪圖。

        1
        2
        3
        4
        5
        6
        using UnityEditor;
        using UnityEngine;
         
        [CustomEditor(typeof(ListTester))]
        public class ListTesterInspector : Editor {
        }

        自定義inspector腳本

        為了真正改變inspector,我們需要重寫Editorclass的OnInspectorGUI方法。如果該方法是空的,那么inspector也將是空的。

        1
        2
        public override void OnInspectorGUI () {
        }

        空的inspector.

        屬性抽屜(property drawer)和編輯器(editor.)之間有三大不同點。

        • 第一:在編輯器中,我們用的是全部 SerializedObject,而不是單獨的SerializedProperty
        • 第二:只要對象保持選定,編輯器實例就會存在,保持引用它的數據,而不是通過方法參數得到它。
        • 第三:我們可以使用EditorGUILayout,這個會自動為我們定位位置。

        我們可以通過serializedObject屬性序列化對象。為了準備它用來編輯,首先要把它與它所代表的組件同步,通過調用它的Update方法。然后就可以展示屬性了。在我們做完之后,需要通過ApplyModifiedProperties方法提交所有修改。這將照看到Unity所有的撤銷歷史記錄。在這兩者之間我們將繪制屬性。

        1
        2
        3
        4
        5
        6
        7
        8
        public override void OnInspectorGUI () {
        serializedObject.Update();
        EditorGUILayout.PropertyField(serializedObject.FindProperty("integers"));
        EditorGUILayout.PropertyField(serializedObject.FindProperty("vectors"));
        EditorGUILayout.PropertyField(serializedObject.FindProperty("colorPoints"));
        EditorGUILayout.PropertyField(serializedObject.FindProperty("objects"));
        serializedObject.ApplyModifiedProperties();
        }

        空屬性的Inspector

        該字段再次可見了,但是它們是空的。這是因為PropertyField 不展示任何具體選項,就像序列元素一樣,除非我們告訴它這么做。

        1
        2
        3
        4
        5
        6
        7
        8
        public override void OnInspectorGUI () {
        serializedObject.Update();
        EditorGUILayout.PropertyField(serializedObject.FindProperty("integers"), true);
        EditorGUILayout.PropertyField(serializedObject.FindProperty("vectors"), true);
        EditorGUILayout.PropertyField(serializedObject.FindProperty("colorPoints"), true);
        EditorGUILayout.PropertyField(serializedObject.FindProperty("objects"), true);
        serializedObject.ApplyModifiedProperties();
        }

        有具體選項的Inspector

        原文鏈接:http://catlikecoding.com/unity/tutorials/editor/custom-list/


        建議使用電驢(eMule)下載分享的資源。

        說明
        :本教程來源互聯網或網友分享或出版商宣傳分享,僅為學習研究或媒體推廣,51zixue.net不保證資料的完整性。
         
        上一篇:【Unity C#編程】自定義編輯器(二)  下一篇:Unity動態字體文字破碎的解決方法(Dynamic Font Broken)
        北京11选5技巧

            <em id="lwy0s"></em>
          1. <div id="lwy0s"></div>

                <em id="lwy0s"></em>
              1. <div id="lwy0s"></div>