仿照NGUI封装 DoTween功能系列 (十二)-TweenerSettingEditor

using DG.Tweening;
using UnityEditor;
using UnityEngine;

namespace UGUITweener
{
    [CustomEditor(typeof(TweenerSetting), true)]
    public class TweenerSettingEditor : Editor
    {
        private SerializedProperty onCompleteEvent;

        protected virtual void OnEnable()
        {
            onCompleteEvent = serializedObject.FindProperty("unityEvent");
        }

        public override void OnInspectorGUI()
        {
            GUILayout.Space(6f);
            base.OnInspectorGUI();
            DrawCommonProperties();
            serializedObject.ApplyModifiedProperties();
        }

        protected void DrawCommonProperties()
        {
            TweenerSetting tw = target as TweenerSetting;

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

                GUI.changed = false;

                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();

                GUILayout.BeginHorizontal();
                int loop = EditorGUILayout.IntField("Loop", tw.loop, GUILayout.Width(170f));
                GUILayout.Label("int");
                GUILayout.EndHorizontal();

                if (loop != 0)
                {
                    GUILayout.BeginHorizontal();
                    tw.loopType = (LoopType)EditorGUILayout.EnumPopup("LoopType", tw.loopType, GUILayout.Width(200f));
                    GUILayout.EndHorizontal();
                }

                GUILayout.BeginHorizontal();
                int tg = EditorGUILayout.IntField("Tween Group", tw.tweenGroup, GUILayout.Width(170f));
                GUILayout.Label("int");
                GUILayout.EndHorizontal();

                bool ts = EditorGUILayout.Toggle("Ignore TimeScale", tw.ignoreTimeScale);

                GUILayout.BeginHorizontal();
                bool autoPlay = EditorGUILayout.Toggle("AutoPlay", tw.autoPlay);
                GUILayout.EndHorizontal();

                if (GUI.changed)
                {
                    TweenTools.RegisterUndo("Tween Change", tw);
                    tw.animationCurve = curve;
                    tw.ignoreTimeScale = ts;
                    tw.autoPlay = autoPlay;
                    tw.tweenGroup = tg;
                    tw.loop = loop;
                    tw.duration = dur;
                    tw.delay = del;
                    TweenTools.SetDirty(tw);
                }
                TweenTools.EndContents();
            }
            if (TweenTools.DrawHeader("OnComplete"))
            {
                TweenTools.SetLabelWidth(80f);
                TweenTools.DrawEvents(onCompleteEvent, new GUIContent("OnComplete"));
            }
        }
    }
}

下载地址:https://download.csdn.net/download/yuyingwin/10846928

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值