например, TransformInspector/OnInspectorGUI
Синтаксис:
Используется csharp
public override void OnInspectorGUI()
{
EditorGUIUtility.LookLikeControls();
Transform target = base.target as Transform;
EditorGUI.indentLevel = 0;
if (this.firstSet || (this.oldQuaternion != target.localRotation))
{
this.firstSet = false;
this.rotation = target.localEulerAngles;
this.oldQuaternion = target.localRotation;
}
Vector3 v = EditorGUILayout.Vector3Field("Position", target.localPosition, new GUILayoutOption[0]);
this.rotation = EditorGUILayout.Vector3Field("Rotation", this.rotation, new GUILayoutOption[0]);
Vector3 vector2 = EditorGUILayout.Vector3Field("Scale", target.localScale, new GUILayoutOption[0]);
if (GUI.changed)
{
if (EditorGUI.allowUndoApply)
{
Undo.RegisterUndo(target, "Transform Change");
EditorGUI.allowUndoApply = false;
}
this.rotation = this.FixIfNaN(this.rotation);
target.localPosition = this.FixIfNaN(v);
target.localEulerAngles = this.rotation;
this.oldQuaternion = target.localRotation;
target.localScale = this.FixIfNaN(vector2);
}
EditorGUIUtility.LookLikeInspector();
}
{
EditorGUIUtility.LookLikeControls();
Transform target = base.target as Transform;
EditorGUI.indentLevel = 0;
if (this.firstSet || (this.oldQuaternion != target.localRotation))
{
this.firstSet = false;
this.rotation = target.localEulerAngles;
this.oldQuaternion = target.localRotation;
}
Vector3 v = EditorGUILayout.Vector3Field("Position", target.localPosition, new GUILayoutOption[0]);
this.rotation = EditorGUILayout.Vector3Field("Rotation", this.rotation, new GUILayoutOption[0]);
Vector3 vector2 = EditorGUILayout.Vector3Field("Scale", target.localScale, new GUILayoutOption[0]);
if (GUI.changed)
{
if (EditorGUI.allowUndoApply)
{
Undo.RegisterUndo(target, "Transform Change");
EditorGUI.allowUndoApply = false;
}
this.rotation = this.FixIfNaN(this.rotation);
target.localPosition = this.FixIfNaN(v);
target.localEulerAngles = this.rotation;
this.oldQuaternion = target.localRotation;
target.localScale = this.FixIfNaN(vector2);
}
EditorGUIUtility.LookLikeInspector();
}
и сделать свой inspector "по мотивам"
но, нужно иметь в виду, что не все, что там использовано доступно нам. доступ к некоторым классам/методам/свойствам возможен только из самой UnityEditor.dll или через класс Reflection, что небезопасно. еще, обращение к недокументированным функциям чревато проблемами с совместимостью при переходе к другой версии. в остальном можно узнать много нового/полезного.