Unity定时器
2016-02-27 21:51
288 查看
需求是在项目中,会遇到很多倒计时功能,比如在线时间奖励,pve活动间隔5分钟
总结常见解决方法有三种
1.Update()每帧检查,适合用于界面上显示具体的数值,这是了准确性。在用户体验倒计时是最好的选择。
2.this.Invoke( string methodName,float time);
Invoke()的作用是:在应用程序的主线程上执行指定的委托。一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时,调用this.Invoke();
public bool Invoke(string methodName);
void Invoke(string methodName);
void InvokeRepeating(string methodName, float time, float repeatRate); 第二个参数是延迟多少秒执行,第三个参数是要执行间隔秒数。
this.CanacelInvoke();还有this.CancelInvoke(string methodName);取消方法
3.IEnumerator () 利用协程中返回需要等待的时间。
WaitForSeconds(float time);
协程的启用方法,StartCoroutine(string name); stopCoroutine(strinf name);1.在线时间奖励和pve活动时间的间隔是用第2种方法。因为在UILabel上会显示数值到计时
2.聊天的时间间隔是使用第一种方法的。原因我接手之前就是这样写的,从时间间隔上,update是比较准确的。
3.在系统的弹幕的定时发送使用了第三种方法,原因是玩家不需要看到倒计时的显示。比如每三分发一次。只要能在大概时间上执行一次。在实现系统弹幕功能的是,系统指令删除的时候,忘了停用携程。
共同点是这三个方法都是继承MonoBehaviour。
协程的作用一共有两点:1)延时(等待)一段时间执行代码;2)等某个操作完成之后再执行后面的代码。总结起来就是一句话:控制代码在特定的时机执行。协程不是线程,也不是异步执行的。协程和 MonoBehaviour 的 Update函数一样也是在MainThread中执行的。使用协程你不用考虑同步和锁的问题。
相关文章推荐
- Unity3d修炼之路:载入一个预制体,然后为该对象加入组件,然后查找对象,得到组件。
- 关于Unity碰撞和触发的总结
- 菜鸟在线Unity3d教程:如何获取摄像机图像?
- 菜鸟在线教你用Unity3D开发VR版的Hello World
- unity3d各种OpenFileDialog操作和Win MessageBox
- Unity IOS端 注意点
- 将NGUI的坐标转换Unity中的世界坐标
- 《Unity_API解析》 第四章 HideFlags类
- Unity3d本地存储
- 《Unity_API解析》 第三章 GameObject类
- [置顶] unity中制作序列帧动画
- [置顶] Unity中基于NGUI插件制作序列帧动画
- 碰撞检测之Ray-Capsule检测
- Unity3d MonoBehaviour 的可重写函数整理
- Unity3d中的属性(Attributes)整理
- Share 学习二:Unity shader 的组织形式
- CCIE学习笔记 3---BGP 团体属性 community
- Unity 编辑器路径设置输入框
- 反序列化多个XML文件后出现Unity卡死
- Unity性能优化专题(腾讯牛人分享经验)