unity 计时管理
来源:互联网 发布:ajax域名加端口号访问 编辑:程序博客网 时间:2024/06/05 15:25
using UnityEngine;using System;using System.Collections;using System.Collections.Generic;public class TimerManager{ private static Dictionary<string, TimerItem> dictList = new Dictionary<string, TimerItem>(); /// <summary> /// 注册计时 /// </summary> /// <param name="timerKey">Timer key.</param> /// <param name="totalNum">Total number.</param> /// <param name="delayTime">Delay time.</param> /// <param name="callback">Callback.</param> /// <param name="endCallback">End callback.</param> public static void Register(string timerKey, int totalNum, float delayTime, Action<int> callback, Action endCallback) { TimerItem timerItem = null; if(!dictList.ContainsKey(timerKey)) { GameObject objectItem = new GameObject (); objectItem.name = timerKey; timerItem = objectItem.AddComponent<TimerItem> (); dictList.Add(timerKey, timerItem); }else { timerItem = dictList[timerKey]; } if(timerItem != null) { timerItem.Run(totalNum, delayTime, callback, endCallback); } } /// <summary> /// 取消注册计时 /// </summary> /// <param name="timerKey">Timer key.</param> public static void UnRegister(string timerKey) { if(!dictList.ContainsKey(timerKey)) return; TimerItem timerItem = dictList [timerKey]; dictList.Remove(timerKey); if(timerItem != null) { timerItem.Stop (); GameObject.Destroy(timerItem.gameObject); } }}class TimerItem : MonoBehaviour{ private int totalNum; private float delayTime; private Action<int> callback; private Action endCallback; private int currentIndex; public void Run(int totalNum, float delayTime, Action<int> callback, Action endCallback) { this.Stop (); this.currentIndex = 0; this.totalNum = totalNum; this.delayTime = delayTime; this.callback = callback; this.endCallback = endCallback; this.StartCoroutine ("EnumeratorAction"); } public void Stop() { this.StopCoroutine ("EnumeratorAction"); } private IEnumerator EnumeratorAction() { yield return new WaitForSeconds (this.delayTime); this.currentIndex ++; if(this.callback != null) this.callback(this.currentIndex); if(this.totalNum != -1) { if(this.currentIndex >= this.totalNum) { if(this.endCallback != null) this.endCallback(); yield break; } } this.StartCoroutine("EnumeratorAction"); }}
阅读全文
0 0
- unity 计时管理
- 关于unity计时问题
- Unity计时实现
- 计时收费管理系统 官方
- Unity3D 计时/倒计时管理类
- 计时
- 计时
- 计时
- 计时
- 计时
- unity的内存管理
- Unity 生命周期管理
- unity内存管理
- Unity 自动内存管理
- Unity 内存管理
- unity 内存管理
- unity音频管理
- unity 的内存管理
- 课堂总结4
- Shiro权限框架
- 简单的学生管理系统
- 性能优化--找到SQL SERVER中的书签查找
- Java之关联,组合,聚合
- unity 计时管理
- yarn 基本操作
- AEGP增效工具AEDynamicLinkServer:无法链接到Adobe Media Encoder
- Gensim官方教程翻译(三)——相似度查询(Similarity Queries)
- TensorFlow技术解析与实战 9 TensorFlow在MNIST中的应用
- 如何在Windows环境下编译Lapack
- 最全的Android 颜色透明度
- 最近的收获
- TensorFlow(一):基本操作