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?
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
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:
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.
Tags und Links c# unity3d unity3d-editor