仿照NGUI封装 DoTween功能系列 (一)-TweenTools

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuyingwin/article/details/80074362

using UnityEditor;
using UnityEngine;

namespace UGUITweener
{
    public class TweenTools
    {
        static public bool DrawHeader(string text)
        {
            return DrawHeader(text, text, false, TweenSet.minimalisticLook);
        }

        static public void BeginContents()
        {
            BeginContents(TweenSet.minimalisticLook);
        }

        private static bool mEndHorizontal = false;

        #region Function

        static public bool DrawHeader(string text, string key, bool forceOn, bool minimalistic)
        {
            bool state = EditorPrefs.GetBool(key, true);

            if (!minimalistic)
                GUILayout.Space(3f);
            if (!forceOn && !state)
                GUI.backgroundColor = new Color(0.8f, 0.8f, 0.8f);
            GUILayout.BeginHorizontal();
            GUI.changed = false;

            if (minimalistic)
            {
                if (state)
                    text = "\u25BC" + (char)0x200a + text;
                else
                    text = "\u25BA" + (char)0x200a + text;

                GUILayout.BeginHorizontal();
                GUI.contentColor = EditorGUIUtility.isProSkin ? new Color(1f, 1f, 1f, 0.7f) : new Color(0f, 0f, 0f, 0.7f);
                if (!GUILayout.Toggle(true, text, "PreToolbar2", GUILayout.MinWidth(20f)))
                    state = !state;
                GUI.contentColor = Color.white;
                GUILayout.EndHorizontal();
            }
            else
            {
                text = "<b><size=11>" + text + "</size></b>";
                if (state)
                    text = "\u25BC " + text;
                else
                    text = "\u25BA " + text;
                if (!GUILayout.Toggle(true, text, "dragtab", GUILayout.MinWidth(20f)))
                    state = !state;
            }

            if (GUI.changed)
                EditorPrefs.SetBool(key, state);

            if (!minimalistic)
                GUILayout.Space(2f);
            GUILayout.EndHorizontal();
            GUI.backgroundColor = Color.white;
            if (!forceOn && !state)
                GUILayout.Space(3f);
            return state;
        }

        static public void BeginContents(bool minimalistic)
        {
            if (!minimalistic)
            {
                mEndHorizontal = true;
                GUILayout.BeginHorizontal();
                EditorGUILayout.BeginHorizontal("AS TextArea", GUILayout.MinHeight(10f));
            }
            else
            {
                mEndHorizontal = false;
                EditorGUILayout.BeginHorizontal(GUILayout.MinHeight(10f));
                GUILayout.Space(10f);
            }
            GUILayout.BeginVertical();
            GUILayout.Space(2f);
        }

        static public void SetLabelWidth(float width)
        {
            EditorGUIUtility.labelWidth = width;
        }

        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;
                    EditorUtility.SetDirty(obj);
                }
            }
        }

        static public void SetDirty(UnityEngine.Object obj)
        {
#if UNITY_EDITOR
            if (obj)
            {
                UnityEditor.EditorUtility.SetDirty(obj);
            }
#endif
        }

        static public void EndContents()
        {
            GUILayout.Space(3f);
            GUILayout.EndVertical();
            EditorGUILayout.EndHorizontal();

            if (mEndHorizontal)
            {
                GUILayout.Space(3f);
                GUILayout.EndHorizontal();
            }

            GUILayout.Space(3f);
        }

        static public void DrawEvents(SerializedProperty property, GUIContent label)
        {
            GUILayout.Space(3f);
            EditorGUILayout.PropertyField(property, label);
        }

        #endregion Function
    }

    public enum ToggleStatus
    {
        None,
        IsTrue,
        IsFalse
    }
}

猜你喜欢

转载自blog.csdn.net/yuyingwin/article/details/80074362