public override void OnInspectorGUI()
    {
        GUILayout.Space(6f);
        CustomUITweenEditorTools.SetLabelWidth(120f);

        CustomTweenHeight tw = target as CustomTweenHeight;

        GUI.changed = false;

        int  from  = EditorGUILayout.IntField("From", tw.from);
        int  to    = EditorGUILayout.IntField("To", tw.to);
        bool table = EditorGUILayout.Toggle("Update Table", tw.updateTable);

        if (from < 0)
        {
            from = 0;
        }
        if (to < 0)
        {
            to = 0;
        }

        if (GUI.changed)
        {
            CustomUITweenEditorTools.RegisterUndo("Tween Change", tw);
            tw.from        = from;
            tw.to          = to;
            tw.updateTable = table;
            CustomUITweenTools.SetDirty(tw);
        }

        DrawCommonProperties();
    }
    /// <summary>
    /// 创建制定对象的撤消点
    /// </summary>
    static public void RegisterUndo(string name, params Object[] objects)
    {
        if (objects != null && objects.Length > 0)
        {
            UnityEditor.Undo.RecordObjects(objects, name);

            foreach (Object obj in objects)
            {
                if (obj == null)
                {
                    continue;
                }
                CustomUITweenTools.SetDirty(obj);
            }
        }
    }
    protected void DrawCommonProperties()
    {
        CustomUITweener tw = target as CustomUITweener;

        if (CustomUITweenEditorTools.DrawHeader("Tweener"))
        {
            CustomUITweenEditorTools.BeginContents();
            CustomUITweenEditorTools.SetLabelWidth(110f);

            GUI.changed = false;

            CustomUITweener.Style style = (CustomUITweener.Style)EditorGUILayout.EnumPopup("Play Style", tw.style);
            EaseType       easeType     = (EaseType)EditorGUILayout.EnumPopup("Ease Type", tw.easeType);
            AnimationCurve curve        = EditorGUILayout.CurveField("Animation Curve", tw.animationCurve, GUILayout.Width(170f), GUILayout.Height(62f));
            GUILayout.BeginHorizontal();
            float dur = EditorGUILayout.FloatField("Duration", tw.duration, GUILayout.Width(170f));
            GUILayout.Label("seconds");
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            float del = EditorGUILayout.FloatField("Start Delay", tw.delay, GUILayout.Width(170f));
            GUILayout.Label("seconds");
            GUILayout.EndHorizontal();

            int  tg = EditorGUILayout.IntField("Tween Group", tw.tweenGroup, GUILayout.Width(170f));
            bool ts = EditorGUILayout.Toggle("Ignore TimeScale", tw.ignoreTimeScale);

            if (GUI.changed)
            {
                CustomUITweenEditorTools.RegisterUndo("Tween Change", tw);
                tw.easeType        = easeType;
                tw.style           = style;
                tw.ignoreTimeScale = ts;
                tw.tweenGroup      = tg;
                tw.duration        = dur;
                tw.delay           = del;
                CustomUITweenTools.SetDirty(tw);
            }
            CustomUITweenEditorTools.EndContents();
        }

        CustomUITweenEditorTools.SetLabelWidth(80f);
        CustomUITweenEditorTools.DrawEvents("On Finished", tw, tw.onFinished);
    }
    public override void OnInspectorGUI()
    {
        GUILayout.Space(6f);
        CustomUITweenEditorTools.SetLabelWidth(120f);

        CustomTweenColor tw = target as CustomTweenColor;

        GUI.changed = false;

        Color from = EditorGUILayout.ColorField("From", tw.from);
        Color to   = EditorGUILayout.ColorField("To", tw.to);

        if (GUI.changed)
        {
            CustomUITweenEditorTools.RegisterUndo("Tween Change", tw);
            tw.from = from;
            tw.to   = to;
            CustomUITweenTools.SetDirty(tw);
        }

        DrawCommonProperties();
    }
    public override void OnInspectorGUI()
    {
        GUILayout.Space(6f);
        CustomUITweenEditorTools.SetLabelWidth(120f);

        CustomTweenVolume tw = target as CustomTweenVolume;

        GUI.changed = false;

        float from = EditorGUILayout.Slider("From", tw.from, 0f, 1f);
        float to   = EditorGUILayout.Slider("To", tw.to, 0f, 1f);

        if (GUI.changed)
        {
            CustomUITweenEditorTools.RegisterUndo("Tween Change", tw);
            tw.from = from;
            tw.to   = to;
            CustomUITweenTools.SetDirty(tw);
        }

        DrawCommonProperties();
    }