携程的yield 是等一帧,然后执行下一句 ,但是不影响其他方法的运行,在停止的时候相当于一个线程。
http://www.xuebuyuan.com/1367145.html
代码!
#pragma strict
function Start ()
{
print("1");
a();
b();
c();
d();
print("4");
}
function Update ()
{
print("5");
}
function a()
{
print("2");
yield; //等一帧
print("3");
}
function b()
{
print("7");
yield; //等一帧
yield; //等一帧
print("8");
}
function c()
{
print("9");
yield; //等一帧
print("10");
}
function d()
{
print("11");
yield WaitForSeconds(1); //等一秒
print("12");
}
结果图:
程序运行,而且又会根据设定的时间来唤醒这条线程,从而达到稍微提升效率的效果,比如说你要写个敌人的AI,写敌人发现玩家的部分,因为要符合人的特性,人不可能很快的做出反应,这个时候你就可以用到它,当然这个功能也能用Update()来实现,但是那个是需要10多行代码来进行计算和判断,而且也不利于维护。
再有一点,就是反应时间的问题,做的AI越像人,那么就应该越符合人的能力,人在某些行为的时候是没有这么快的放映速度的,比如说人睡觉的时候,从背后接近人的时候等等,所以这时候可以4帧或者更长的时间来调用方法来检测,也是很符合实际的,这样照理来说会提升很多性能。
当然如果我说错了,请大神指正哈,我也好及时修正这篇博客,以免继续误导他人哈
代码!
#pragma strict
function Start ()
{
print("1");
a();
b();
c();
d();
print("4");
}
function Update ()
{
print("5");
}
function a()
{
print("2");
yield; //等一帧
print("3");
}
function b()
{
print("7");
yield; //等一帧
yield; //等一帧
print("8");
}
function c()
{
print("9");
yield; //等一帧
print("10");
}
function d()
{
print("11");
yield WaitForSeconds(1); //等一秒
print("12");
}
结果图:
程序运行,而且又会根据设定的时间来唤醒这条线程,从而达到稍微提升效率的效果,比如说你要写个敌人的AI,写敌人发现玩家的部分,因为要符合人的特性,人不可能很快的做出反应,这个时候你就可以用到它,当然这个功能也能用Update()来实现,但是那个是需要10多行代码来进行计算和判断,而且也不利于维护。
再有一点,就是反应时间的问题,做的AI越像人,那么就应该越符合人的能力,人在某些行为的时候是没有这么快的放映速度的,比如说人睡觉的时候,从背后接近人的时候等等,所以这时候可以4帧或者更长的时间来调用方法来检测,也是很符合实际的,这样照理来说会提升很多性能。
当然如果我说错了,请大神指正哈,我也好及时修正这篇博客,以免继续误导他人哈