/*
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;
}
}
}