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