在Unity中,我们经常会用到计时器这个功能,写法有很多,今天向大家介绍个比较简便的方式,利用协程和Action回调。
第一种计时器 在倒计时结束后去调用指定方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
using UnityEngine; using System.Collections; using System; public class Test : MonoBehaviour { void Start() { // 3秒后调用 DoSomeThing() StartCoroutine(Timer(3, DoSomeThing, "结束了调我哦")); } void DoSomeThing(string _str) { Debug.Log(_str); } /// <summary> /// 开始计时 /// </summary> /// <param name="_t"> 计时时间 </param> /// <param name="_ac"> 计时结束调用回调方法 </param> /// <param name="_str"> 方法参数 </param> IEnumerator Timer(float _t, Action<string> _ac, string _str) { yield return new WaitForSeconds(_t); _ac(_str); } } |
第二种计时器 用于显示倒计时时间的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
using UnityEngine; using System.Collections; using System; public class Test : MonoBehaviour { void Start() { // 3秒后调用 DoSomeThing() StartCoroutine(Timer(3, DoSomeThing)); } void DoSomeThing(float _time) { Debug.Log("正在倒计时:" + _time); } /// <summary> /// 开始计时 /// </summary> /// <param name="_t"> 计时时间 </param> /// <param name="_ac"> 计时结束调用回调方法 </param> IEnumerator Timer(float _t, Action<float> _ac) { for (float timer = _t; timer > 0; timer -= 1) { _ac(timer); yield return new WaitForSeconds(1); } } } |
- 本文固定链接: http://www.u3d8.com/?p=789
- 转载请注明: 网虫虫 在 u3d8.com 发表过