亲宝软件园·资讯

展开

Unity延时调用定时器 Unity封装延时调用定时器

林新发 人气:0

封装一个延时调用定时器类

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;

public class WaitTimeManager 
{
 private static TaskBehaviour m_Task;
 static WaitTimeManager()
 {
 GameObject go = new GameObject("#WaitTimeManager#");
 GameObject.DontDestroyOnLoad(go);
 m_Task = go.AddComponent<TaskBehaviour> ();
 }

 //等待
 static public Coroutine WaitTime(float time,UnityAction callback)
 {
 return m_Task.StartCoroutine(Coroutine(time,callback));
 }
 
 //取消等待
 static public void CancelWait(ref Coroutine coroutine)
 {
 if (coroutine != null) {
 m_Task.StopCoroutine(coroutine);
 coroutine = null;
 }
 }

 static IEnumerator Coroutine(float time, UnityAction callback) {
 yield return new WaitForSeconds (time);
 if (callback != null) {
 callback();
 }
 }
 
 //内部类
 class TaskBehaviour : MonoBehaviour { }
}

测试

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Script_04_15 : MonoBehaviour {

 void Start () {
 //开启定时器
 Coroutine coroutine = WaitTimeManager.WaitTime(5f, delegate {
 Debug.LogFormat("等待5秒后回调");
 });

 //等待过程中取消它
 //WaitTimeManager.CancelWait (ref coroutine);
 }
}

加载全部内容

相关教程
猜你喜欢
用户评论