Unity Editor - DrawDefaultInspector funktioniert nicht

9

Ich versuche eine einfache Editor-Erweiterung nur für Lernzwecke zu schreiben. Diese Erweiterung prüft nur, ob das Ziel eine JSON-Datei ist, zählt dann ihre Schlüssel oder führt eine andere beliebige Aufgabe aus.

So sieht der Inspektor standardmäßig aus.

Dann fing ich an, meinen Custom Inspector genau so zu schreiben.

%Vor%

Beachten Sie den Aufruf von DrawDefaultInspector ().

Jetzt sieht der Inspektor so aus.

Warum wird der Standardinspektor nicht gezeichnet? Was ich meine Erweiterung verstehen kann, sollte grundsätzlich nichts tun, oder?

    
Rasmus 21.05.2015, 13:40
quelle

2 Antworten

2

Ich denke, das Problem ist, dass TextAsset keine normale Editor-Klasse für den Inspektor verwendet. Viele integrierte Klasse von Einheit mit speziellen eingebauten Editor-Klasse, die nicht öffentlich ist

Sie könnten versuchen, [CustomEditor(typeof(TextAsset))] auf [CustomEditor(typeof(Transform))] oder [CustomEditor(typeof(Animator))] zu ändern. Der "Real Default Inspector" von Transform und Animator ist nicht derselbe wie der normale

Wenn Sie also einen benutzerdefinierten Editor erstellen möchten. Kümmern Sie sich nicht um den Standardinspektor. Mach es einfach von Grund auf neu. Viel Glück

    
Thaina 03.09.2015 03:44
quelle
2

Wenn Sie den integrierten Text-Asset-Inspektor außer Kraft setzen möchten, müssen Sie ihn finden und von Ihrem eigenen Editor aus aufrufen. Die Klasse heißt UnityEditor.TextAssetInspector , ist aber eine private interne Klasse, auf die normalerweise nur von Unity intern referenziert werden kann. Sie können jedoch mit einer solchen Reflektion darauf zugreifen:

%Vor%

Dies durchsucht alle derzeit geladenen Assemblys nach dem Typ UnityEditor.TextAssetInspector und erstellt dann eine Instanz davon für das aktuelle Asset-Ziel. Wir verwenden die Version von Editor.CreateEditor , mit der wir den Typ des zu erstellenden Editors übergeben können, da andernfalls versucht wird, eine Instanz von TestInspector zu erstellen.

Beachten Sie, dass dies bestimmte Aspekte der Unity-Interna voraussetzt und in zukünftigen Unity-Versionen möglicherweise nicht funktioniert.

    
Sam 14.01.2016 23:10
quelle

Tags und Links