public static void CreateExpansionLayoutScreen() { GameObject gameObject = new GameObject("LayoutElementScreen"); RectTransform rectTransform = CreateRectTransform(gameObject, Selection.activeTransform); UiLayoutElementScreen element = gameObject.AddComponent <UiLayoutElementScreen>(); UiAnimationClip animationShow = new UiAnimationClip { Name = "Screen Show Animation", PlayOnLayoutElementShow = true }; UiAnimationClip animationHide = new UiAnimationClip { Name = "Screen Hide Animation", PlayOnLayoutElementHide = true }; UiAnimation animation = gameObject.AddComponent <UiAnimation>(); animation.AnimationClips = new System.Collections.Generic.List <UiAnimationClip> { animationShow, animationHide }; element.AnimationShow = animationShow.Name; element.AnimationHide = animationHide.Name; Selection.activeObject = gameObject; }
/// <summary> /// MonoBehavior Awake handler. /// In inherited classes always use base.Awake() when overriding this method. /// </summary> protected override void Awake() { base.Awake(); _animation = GetComponent <UiAnimation>(); if (_animation != null) { _animation.OnComplete += OnAnimationCompleted; _animationShow = _animation.GetAnimationClipByName(AnimationShow); _animationHide = _animation.GetAnimationClipByName(AnimationHide); if (_animationShow != null) { _animationShow.PlayOnAwake = false; _animationShow.PlayOnLayoutElementShow = false; _animationShow.PlayOnLayoutElementHide = false; _animationShow.Loop = false; } if (_animationHide != null) { _animationHide.PlayOnAwake = false; _animationHide.PlayOnLayoutElementShow = false; _animationHide.PlayOnLayoutElementHide = false; _animationHide.Loop = false; } } }
// Animation completed handler. private void OnAnimationCompleted(UiAnimationClip animation) { if (animation == _animationShow) { ShowEnd(); } if (animation == _animationHide) { HideEnd(); } }
bool IUiAnimation.HasClip(UiAnimationClip clip, string suffix) { switch (clip) { case UiAnimationClip.UAC_SHOW: return(animator.HasState(0, Animator.StringToHash(UiBase.ShowClipName + suffix))); case UiAnimationClip.UAC_HIDE: return(animator.HasState(0, Animator.StringToHash(UiBase.HideClipName + suffix))); default: return(false); } }
void IUiAnimation.Play(UiAnimationClip clip, string suffix) { animator.enabled = true; switch (clip) { case UiAnimationClip.UAC_SHOW: animator.Play(UiBase.ShowClipName + suffix, 0); break; case UiAnimationClip.UAC_HIDE: animator.Play(UiBase.HideClipName + suffix, 0); break; default: debug.PrintSystem.LogError("[UiAnimator] Unexpected clip: " + clip.ToString() + suffix); return; } }
protected void playAnimations(UiAnimationClip animationClip) { switch (animationClip) { case UiAnimationClip.UAC_SHOW: { State = UiState.US_SHOWING; break; } case UiAnimationClip.UAC_HIDE: { State = UiState.US_HIDING; break; } default: { //debug.PrintSystem.LogError("[UiBase] Play an incorrect animation."); return; } } // Check number of clips. for (int i = 0; i < uiAnimations.Length; ++i) { if (uiAnimations[i].HasClip(animationClip, uiAnimationSuffix)) { playingAnimations.Add(uiAnimations[i]); } } if (playingAnimations.Count == 0) { onTransitionComplete(); return; } // Play clips. for (int i = 0, count = playingAnimations.Count; i < count; ++i) { playingAnimations[i].Play(animationClip, uiAnimationSuffix); } }
private static void RenderMenu(float positionX, float positionY, float width, float height) { GUIStyle splitStyle = new GUIStyle(); splitStyle.fixedWidth = 1; splitStyle.fixedHeight = height; splitStyle.margin = new RectOffset(0, 0, 0, 0); splitStyle.normal.background = InternalUiAnimationEditorTextures.ColorBlack20; GUIStyle dropdownStyle = new GUIStyle(new GUIStyle(GUI.skin.GetStyle("Popup"))); dropdownStyle.fixedHeight = height; dropdownStyle.margin = new RectOffset(0, 0, 0, 0); dropdownStyle.normal.background = InternalUiAnimationEditorTextures.ColorInvisible; dropdownStyle.hover.background = InternalUiAnimationEditorTextures.ColorBlack10; dropdownStyle.active.background = InternalUiAnimationEditorTextures.ColorBlack20; dropdownStyle.focused.background = InternalUiAnimationEditorTextures.ColorInvisible; GUIStyle buttonStyle = new GUIStyle(new GUIStyle(GUI.skin.GetStyle("Button"))); buttonStyle.fixedWidth = height; buttonStyle.fixedHeight = height; buttonStyle.normal.background = InternalUiAnimationEditorTextures.ColorInvisible; buttonStyle.hover.background = InternalUiAnimationEditorTextures.ColorBlack10; buttonStyle.active.background = InternalUiAnimationEditorTextures.ColorBlack20; buttonStyle.margin = new RectOffset(0, 0, 0, 0); buttonStyle.padding = new RectOffset(0, 0, 0, 0); GUILayout.BeginArea(new Rect(positionX, positionY, width - 0, height), new GUIStyle()); GUILayout.BeginHorizontal(); // Play button if (InternalUiAnimationEditorPlayer.Activated) { Texture2D icon = new Texture2D(8, 8); Color color = new Color(0.22f, 0.22f, 0.22f, 1); for (int x = 0; x < icon.width; x++) { for (int y = 0; y < icon.height; y++) { icon.SetPixel(x, y, color); } } icon.Apply(); InternalUiAnimationEditorGUI.Button ( icon, buttonStyle, () => { InternalUiAnimationEditorPlayer.Stop(); } ); GUILayout.Box(string.Empty, splitStyle); } else { InternalUiAnimationEditorGUI.Button ( EditorGUIUtility.IconContent("Animation.Play").image, buttonStyle, () => { InternalUiAnimationEditorPlayer.Play(); } ); GUILayout.Box(string.Empty, splitStyle); } // Active timeline popup InternalUiAnimationEditorGUI.Popup ( InternalUiAnimationEditorSelection.TargetAnimationClipIndex, InternalUiAnimationEditorSelection.GetAnimationClipsNames(), dropdownStyle, (int value) => { GUI.FocusControl(string.Empty); InternalUiAnimationEditorSelection.SetTargetAnimationClipIndex(value); } ); GUILayout.Box(string.Empty, splitStyle); // Add timeline button InternalUiAnimationEditorGUI.Button ( EditorGUIUtility.IconContent("Toolbar Plus").image, buttonStyle, () => { if (InternalUiAnimationEditorSelection.TargetAnimation != null) { UiAnimationClip timeline = new UiAnimationClip(); timeline.Name = "New Timeline " + InternalUiAnimationEditorSelection.TargetAnimation.AnimationClips.Count; InternalUiAnimationEditorSelection.TargetAnimation.AnimationClips.Add(timeline); InternalUiAnimationEditorSelection.SetTargetAnimationClipIndex(InternalUiAnimationEditorSelection.TargetAnimation.AnimationClips.IndexOf(timeline)); } } ); GUILayout.Box(string.Empty, splitStyle); // Remove timeline button InternalUiAnimationEditorGUI.Button ( EditorGUIUtility.IconContent("Toolbar Minus").image, buttonStyle, () => { if (InternalUiAnimationEditorSelection.TargetAnimation != null) { if (InternalUiAnimationEditorSelection.TargetAnimation.AnimationClips.Count > 1) { if (EditorUtility.DisplayDialog("Error", "Are you sure you want to delete " + InternalUiAnimationEditorSelection.TargetAnimationClip.Name + "?", "Yes", "No")) { InternalUiAnimationEditorSelection.TargetAnimation.AnimationClips.RemoveAt(InternalUiAnimationEditorSelection.TargetAnimationClipIndex); InternalUiAnimationEditorSelection.SetTargetAnimationClipIndex(0); } } else { EditorUtility.DisplayDialog("Error", "You can not delete last timeline.", "OK"); } } } ); GUILayout.Box(string.Empty, splitStyle); // Dropdown icon Texture dropdownIcon = EditorGUIUtility.IconContent("Icon Dropdown").image; InternalUiAnimationEditorGUI.DrawTexture(width - 60, positionY + 9, dropdownIcon.width, dropdownIcon.height, dropdownIcon); GUILayout.EndHorizontal(); GUILayout.EndArea(); }
private static void RenderAnimationClip(UiAnimationClip clip) { clip.Name = InternalUiAnimationEditorGUI.InspectorTextField ( "Name", clip.Name ); clip.Loop = InternalUiAnimationEditorGUI.InspectorBooleanField ( new GUIContent("Loop animation"), clip.Loop ); List <string> triggers = new List <string>(); if (clip.PlayOnAwake) { triggers.Add("Awake"); } if (clip.PlayOnLayoutElementShow) { triggers.Add("Element Show"); } if (clip.PlayOnLayoutElementHide) { triggers.Add("Element Hide"); } if (clip.PlayOnSignals.Length > 0) { triggers.Add("Signals"); } string playon = ""; if (triggers.Count > 1) { playon += " " + triggers.Count + " triggers"; } else if (triggers.Count > 0) { playon += " " + triggers[0]; } else { playon = " ..."; } _expandPlayOnBlock = EditorGUILayout.Foldout(_expandPlayOnBlock, "Play on" + playon, true); if (_expandPlayOnBlock) { clip.PlayOnAwake = InternalUiAnimationEditorGUI.InspectorBooleanField ( new GUIContent(" Awake"), clip.PlayOnAwake ); clip.PlayOnLayoutElementShow = InternalUiAnimationEditorGUI.InspectorBooleanField ( new GUIContent(" Element show"), clip.PlayOnLayoutElementShow ); clip.PlayOnLayoutElementHide = InternalUiAnimationEditorGUI.InspectorBooleanField ( new GUIContent(" Element hide"), clip.PlayOnLayoutElementHide ); InternalLayout.ButtonSignals ( " Signals", "Select signals to play animation clip", clip.PlayOnSignals, (string[] result) => { clip.PlayOnSignals = result; }, 15 ); } }