Esempio n. 1
0
                public FadeGroup Get(string Title, UnityAction Repaint, bool defaultEnable = false, params GUILayoutOption[] options)
                {
                    FadeGroup group = null;

                    if (!Groups.TryGetValue(Title, out group))
                    {
                        group = new FadeGroup();
                        group.OnEnable(Repaint, defaultEnable);
                        Groups[Title] = group;
                    }
                    return(group);
                }
Esempio n. 2
0
        public static ZTweener DOFade(GameObject go, FadeGroup fadeDir, bool reset)
        {
            ZTweener ret = null;

            if (go)
            {
                var list = ListPool <Component> .Get();

                go.GetComponents(typeof(FadeBase), list);
                float duration = 0;
                for (int i = 0; i < list.Count; ++i)
                {
                    var com = list[i];
                    var fad = com as FadeBase;
                    if (fadeDir == fad.fadeGroup)
                    {
                        if (fad.DOFade(reset))
                        {
                            if (fad.loops < 0)
                            {
                                continue;
                            }
                            int nLoop      = fad.loops == 0 ? 1 : fad.loops;
                            var fxDuration = fad.duration * nLoop + fad.delay;
                            if (duration < fxDuration)
                            {
                                duration = fxDuration;
                                ret      = fad.tweener;
                            }
                        }
                    }
                }
                ListPool <Component> .Release(list);
            }
            return(ret);
        }
    public override void OnInspectorGUI()
    {
        EditorGUILayout.HelpBox("如果勾选 [Always Find Fades] ," +
                                "将在每次 FadeIn 或 FadeOut 的时候获取所有子节点中的Fade。\n" +
                                "如果勾选 [On Start Find Fades], 则在 OnStart 时获取所有自己点Fade。\n" +
                                "若以上均未勾选,则使用自己管理的 Fade 列表。", MessageType.Info);
        EditorGUILayout.Space();

        bool isCustom = !PropertyField("alwaysFindFades").boolValue &&
                        !PropertyField("onStartFindFades").boolValue;

        if (!isCustom)
        {
            serializedObject.FindProperty("m_fades").ClearArray();
        }
        serializedObject.ApplyModifiedProperties();

        EditorGUILayout.Space();
        FadeGroup fadeGroup = target as FadeGroup;

        if (EditorApplication.isPlaying && GUILayout.Button("All Fade In"))
        {
            fadeGroup.FadeIn();
            EditorGUILayout.Space();
        }
        if (EditorApplication.isPlaying && GUILayout.Button("All Fade Out"))
        {
            fadeGroup.FadeOut();
            EditorGUILayout.Space();
        }


        GUIStyle style = new GUIStyle();

        style.richText = true;
        EditorGUILayout.LabelField("<b><color=#8CEA00><size=14>"
                                   + (isCustom ? "Custom Fades" : "Fades") + "</size></color></b>", style);
        EditorGUILayout.BeginVertical("box");

        var m_fades = serializedObject.FindProperty("m_fades");
        var fades   = new Fade[0];

        if (!isCustom)
        {
            fades = fadeGroup.GetComponentsInChildren <Fade>(true);
        }
        else
        {
            int length = m_fades.arraySize;
            fades = new Fade[length];
            for (int i = 0; i < length; i++)
            {
                var elem = m_fades.GetArrayElementAtIndex(i);
                fades[i] = (Fade)elem.objectReferenceValue;
            }
        }

        for (int i = 0; i < fades.Length; i++)
        {
            var fade = fades[i];
            EditorGUILayout.BeginHorizontal();

            EditorGUI.BeginDisabledGroup(!fade.enableFadeIn);
            if (EditorApplication.isPlaying && GUILayout.Button("Fade In"))
            {
                fade.FadeIn();
            }
            EditorGUI.EndDisabledGroup();

            EditorGUI.BeginDisabledGroup(!fade.enableFadeOut);
            if (EditorApplication.isPlaying && GUILayout.Button("Fade Out"))
            {
                fade.FadeOut();
            }
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.LabelField($" <b><color=#cccccc>{fade.name}</color></b> <color=#55AA00>[{fade.GetType().Name}]</color>", style);

            if (isCustom && GUILayout.Button("-", GUILayout.Width(20)))
            {
                m_fades.arraySize = m_fades.arraySize - 1;
                for (int j = 0; j < m_fades.arraySize; j++)
                {
                    int index = j;
                    if (j >= i)
                    {
                        index += 1;
                    }
                    m_fades.GetArrayElementAtIndex(j).objectReferenceValue = fades[index];
                }
                serializedObject.ApplyModifiedProperties();
            }
            EditorGUILayout.EndHorizontal();
        }

        if (isCustom && GUILayout.Button("Find All Fades"))
        {
            var allFades = fadeGroup.GetComponentsInChildren <Fade>(true);
            m_fades.arraySize = allFades.Length;
            for (int i = 0; i < allFades.Length; i++)
            {
                var elem = m_fades.GetArrayElementAtIndex(i);
                elem.objectReferenceValue = allFades[i];
            }
        }

        EditorGUILayout.EndVertical();
        EditorGUILayout.Space();

        serializedObject.ApplyModifiedProperties();
    }