让你真正的了解Unity的协程(yield)的工作方式!

 

首先,这是写给有一点编程功底基础的人,才能看懂的,我将以最直观的方法来让你了解协程的工作方式----代码!

#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帧或者更长的时间来调用方法来检测,也是很符合实际的,这样照理来说会提升很多性能。

当然如果我说错了,请大神指正哈,我也好及时修正这篇博客,以免继续误导他人哈

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值