/* http://www.cgsoso.com/forum-211-1.html CG搜搜 Unity3d 每日Unity3d插件免费更新 更有VIP资源! CGSOSO 主打游戏开发,影视设计等CG资源素材。 插件如若商用,请务必官网购买! daily assets update for try. U should buy the asset from home store if u use it in your project! */ using UnityEngine; using UnityEngine.Events; namespace MS { public class Popup : MonoBehaviour { public static Popup current; [Header("Anim Setting")] public Animator animator; public AnimationClip openClip; public AnimationClip closeClip; [Header("Popup Setting")] public bool isOpen; public bool closeOnEsc; private bool isPlaying; public UnityEvent onClose; public UnityEvent onOpen; private void Start() { AnimationEvent animationEvent = new AnimationEvent(); animationEvent.functionName = "onStopAnim"; animationEvent.time = openClip.length; openClip.AddEvent(animationEvent); AnimationEvent animationEvent2 = new AnimationEvent(); animationEvent2.functionName = "onStopAnim"; animationEvent2.time = openClip.length; closeClip.AddEvent(animationEvent2); if (isOpen) { Open(); } else { Close(); } } [ContextMenu("Open")] public void Open(bool onEnd = false) { if (!isPlaying && !isOpen) { current = this; isOpen = true; isPlaying = true; animator.Play(openClip.name); if (onEnd) { onOpen.Invoke(); } } } [ContextMenu("Close")] public void Close(bool onEnd = false) { if (!isPlaying && isOpen) { isPlaying = true; animator.Play(closeClip.name); isOpen = false; if (onEnd) { onClose.Invoke(); } } } [ContextMenu("Open")] public void Open() { Open(onEnd: false); } [ContextMenu("Close")] public void Close() { Close(onEnd: false); } public void onStopAnim() { isPlaying = false; } } }