从NGUI的源代码中抽取出来的, 可以直接用在没有NGUI的项目中 (要放在Editor文件夹下才有效)
//----------------------------------------------
// NGUI: Next-Gen UI kit// Copyright © 2011-2014 Tasharen Entertainment
//----------------------------------------------
#if UNITY_3_5
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(Transform))]
public class NGUITransformInspector : Editor
{
/// <summary>
/// Draw the inspector widget.
/// </summary>
public override void OnInspectorGUI ()
{
Transform trans = target as Transform;
NGUIEditorTools.SetLabelWidth(15f);
Vector3 pos;
Vector3 rot;
Vector3 scale;
// Position
EditorGUILayout.BeginHorizontal();
{
if (DrawButton("P", "Reset Position", IsResetPositionValid(trans), 20f))
{
NGUIEditorTools.RegisterUndo("Reset Position", trans);
trans.localPosition = Vector3.zero;
}
pos = DrawVector3(trans.localPosition);
}
EditorGUILayout.EndHorizontal();
// Rotation
EditorGUILayout.BeginHorizontal();
{
if (DrawButton("R", "Reset Rotation", IsResetRotationValid(trans), 20f))
{
NGUIEditorTools.RegisterUndo("Reset Rotation", trans);
trans.localEulerAngles = Vector3.zero;
}
rot = DrawVector3(trans.localEulerAngles);
}
EditorGUILayout.EndHorizontal();
// Scale
EditorGUILayout.BeginHorizontal();
{
if (DrawButton("S", "Reset Scale", IsResetScaleValid(trans), 20f))
{
NGUIEditorTools.RegisterUndo("Reset Scale", trans);
trans.localScale = Vector3.one;
}
scale = DrawVector3(trans.localScale);
}
EditorGUILayout.EndHorizontal();
// If something changes, set the transform values
if (GUI.changed)
{
NGUIEditorTools.RegisterUndo("Transform Change", trans);
trans.localPosition = Validate(pos);
trans.localEulerAngles = Validate(rot);
trans.localScale = Validate(scale);
}
}
/// <summar