用于單獨Reset transform的三個屬性:localposition持偏、localrotation遏匆、localScale瘦馍。
//----------------------------------------------
//? ?? ?? ?? ?? ?? ?? ?? ???Transform值一鍵復(fù)位
// Copyright ? 2012-2015 xiaobao1993.com
//----------------------------------------------
using unityEngine;
using UnityEditor;
[CanEditMultipleObjects]
[CustomEditor(typeof(Transform), true)]
public class TransformInspector : Editor
{
static public TransformInspector instance;
SerializedProperty mPos;
SerializedProperty mRot;
SerializedProperty mScale;
void OnEnable()
{
instance = this;
mPos = serializedObject.FindProperty("m_LocalPosition");
mRot = serializedObject.FindProperty("m_LocalRotation");
mScale = serializedObject.FindProperty("m_LocalScale");
}
void OnDestroy() { instance = null; }
///
/// 開始繪制Transform
///
public override void OnInspectorGUI()
{
EditorGUIUtility.labelWidth = 15;
serializedObject.Update();
DrawPosition();
DrawRotation();
DrawScale();
serializedObject.ApplyModifiedProperties();
}
///
/// 繪制坐標(biāo)
///
void DrawPosition()
{
GUILayout.BeginHorizontal();
{
bool reset = GUILayout.Button("P", GUILayout.Width(20f));
EditorGUILayout.PropertyField(mPos.FindPropertyRelative("x"));
EditorGUILayout.PropertyField(mPos.FindPropertyRelative("y"));
EditorGUILayout.PropertyField(mPos.FindPropertyRelative("z"));
if (reset) mPos.vector3Value = Vector3.zero;
}
GUILayout.EndHorizontal();
}
///
/// 繪制形變
///
void DrawScale()
{
GUILayout.BeginHorizontal();
{
bool reset = GUILayout.Button("S", GUILayout.Width(20f));
EditorGUILayout.PropertyField(mScale.FindPropertyRelative("x"));
EditorGUILayout.PropertyField(mScale.FindPropertyRelative("y"));
EditorGUILayout.PropertyField(mScale.FindPropertyRelative("z"));
if (reset) mScale.vector3Value = Vector3.one;
}
GUILayout.EndHorizontal();
}
#region 旋轉(zhuǎn)個坑爹玩意......因為四元屬性繪制沒有原生支持
enum Axes : int
{
None = 0,
X = 1,
復(fù)制代碼
聯(lián)系方式:0755-81699111
課程網(wǎng)址 : http://www.vrkuo.com/course/vr.html