Unity3d之协程自实现测试
using UnityEngine;
using System.Collections; public class TestStartCoroutine : MonoBehaviour
{
IEnumerator m_etor;
bool m_moveNext;
MyWaitForSeconds m_waiter; #region MyRegion class MyWaitForSeconds
{
int m_seconds;
float m_timer; public MyWaitForSeconds(int seconds)
{
m_seconds = seconds;
m_timer = 0;
} public bool Update(float deltaTime)
{
m_timer += deltaTime;
return m_timer >= m_seconds;
}
} #endregion void Start()
{
MyStartCoroutine(T1());
} public void MyStartCoroutine(IEnumerator etor)
{
m_etor = etor;
m_moveNext = true;
} IEnumerator T1()
{
Debug.Log("#1"); int i = 0;
while (i++ < 60)
{
Debug.Log("#2 " + i);
yield return null;
} Debug.Log("#3"); yield return new MyWaitForSeconds(3); Debug.Log("#4");
} void Update()
{
if (m_moveNext)
{
if (!m_etor.MoveNext())
m_moveNext = false;
else if (m_etor.Current is MyWaitForSeconds)
{
m_waiter = (MyWaitForSeconds)m_etor.Current;
m_moveNext = false;
}
} if (m_waiter != null)
{
if (m_waiter.Update(Time.deltaTime))
{
m_waiter = null;
m_moveNext = true;
}
}
}
}
Unity3d的协程是利用枚举器来实现的,我猜可能是跟以上测试代码一样,在一帧里让枚举器的指针加1,从而可以等待1帧。
Unity3d之协程自实现测试的更多相关文章
- Unity3D之协程(Coroutines & Yield )
在Unity中StartCoroutine/yield return这个模式到底是怎么应用的? 比如你要一个方法进行一个比较耗时的复杂运算~同时又想让脚本流畅的进行其他操作而不是卡在那里等该方法执行完 ...
- unity3D中协程和线程混合
这是我google unity3D一个问题偶然发现的在stackflow上非常有趣的帖子: 大意是 要在unity3D上从server下载一个zip,并解压到持久化地址.并将其载入到内存中.以下展示了 ...
- Unity3d 通过协程来实现文件的全部加载后执行
相信大家会经常遇到在游戏中需要WWW从本地或者服务器上获取数据,而我们通常容易会犯下面这种个错误:当数据较少或者网速较好时程序运行正常.而当数据较大或者网速不好时程序会出错误.比如卡住. 所以我们要使 ...
- python 协程 gevent 简单测试
串行测试 from gevent import monkey; monkey.patch_all()#有IO才做时需要这一句 import gevent import requests,time st ...
- Unity3d 协程的注意问题(新手须注意,老手须加勉)
关于unity3d的协程,非常的好用,比如等待几秒执行,等待下一帧执行等! 但是也有潜在的问题: 1.协程是单线程的,在主线程中完成 2.如果发现yield, 那么这一帧会结束,那么等下一帧调用此脚本 ...
- Unity3D协程yield的理解
Unity3D的协程概括地将就是:对于一段程序,你可以加上yield标明哪里需要暂停,然后在下一帧或者一段时间后,系统会继续执行这段代码.协程的作用:①延迟一段时间执行代码.②等某个操作完成之后再执行 ...
- Unity3D中的线程与协程
线程 Unity3D是以生命周期主线程循环进行游戏开发. Unity3D中的子线程无法运行Unity SDK(开发者工具包,软件包.软件框架)跟API(应用程序编程接口,函数库). 限制原因:大多数游 ...
- unity协程coroutine浅析
转载请标明出处:http://www.cnblogs.com/zblade/ 一.序言 在unity的游戏开发中,对于异步操作,有一个避免不了的操作: 协程,以前一直理解的懵懵懂懂,最近认真充电了一下 ...
- python--gevent协程及协程概念
何为协程 协程,又称微线程.英文名Coroutine. 协程最大的优势就是协程极高的执行效率.因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的 ...
随机推荐
- C#获取周的第一天、最后一天、月第一天和最后一天
[csharp] view plaincopyprint? public class DateTimeTool { /// <summary> /// 获取指定日期所在周的第一天,星期天为 ...
- mybatis 的一点问题
写法1: public User queryUserByUsername(String username); 写法2: public User queryUserByUsername(@Par ...
- js获取当前日期与星期
var currentDate = new Date(); var weekday = ["星期日", "星期一", "星期二", &quo ...
- php moungoDB
moungoDB 语法 SQL查询语句 Mongo查询语句 CREATE TABLE USERS (a Number, b Number) 隐式的创建,或 MongoDB::createCollect ...
- Swift中的闭包(Closure) 浅析
转载自:http://www.devtalking.com/articles/closure-expressions-in-swift/ 闭包在Swift中非常有用.通俗的解释就是一个Int类型里存储 ...
- Provisioning profile 浅析
转载自: http://blog.csdn.net/chenyufeng1991/article/details/48976245 一般在我们代码编写中不会用到Provisioning prof ...
- 《割绳子》《蜡笔物理学》《Contre Jour》《顽皮鳄鱼爱洗澡》等游戏用Box2D引擎实现物理部分的方法(转)
从最热门游戏排行榜和flash游戏网站上,你能看到什么?许多2D游戏都有非常出色的物理学和美术设计.现在我们要学习那些游戏使用了什么物理学以及如何用Box2D制作它们. 除了知道是“什么”,更重要的是 ...
- 初探JavaScript魅力(四)
选项卡 <title>无标题文档</title> <style> #div1 .active{background:#FF0;} #div1 div{width:2 ...
- android 5.0新特性学习--视图轮廓
ViewOutlineProvider -- 视图轮廓setOutlineProvider--可以使用View.setClipToOutline方法去剪切一个视图的outline区域.只有rectan ...
- win7 系统保留分区 BCDedit
系统保留分区简介编辑 “系统保留”分区示意图 Windows Vista/7出于安全考虑,在新装Windows Vista/7系统过程中,如果利用光盘的分区工具给硬盘分区时,系统默认的将一部分(100 ...