引言
最近在学习3DRPG的时候,遇到了协程,之前还不知道是干什么的,昨天简单的看了下协程,发现不是特别难理解,相当于线程,所以趁热写一篇博客记录下。
正文
首先对于不了解协程的小伙伴来说,我把我昨天看到的比较好的文章贴在下方,我看了这个文章就理解了。
传送门
首先来谈谈我对协程的理解
协程是相对于Unity异步执行的东西,相当于协程被单独拿出来执行了。比如同一个对象Update里面的代码就是同步执行的,比如你写了一个Update方法,里面的代码都是一行一行执行的。而协程好比是你去吃饭,你是不是还可以刷手机呢?相当于你同时在做两件事。协程就是这个意思。
应用
那么协程可以被用来做什么呢。
可以做计时器。
如果没用协程,你的Update方法可能是这样
private float delayTime;
private void Update()
{
if(delayTime != 0)
{
delayTime -= Time.deltaTime;
//doAnyThing
}
else
{
delayTime = 某个值;
//doAnyThing
}
}
然后来看看协程版本
private void Update()
{
StartCoroutine(Func());
}
private IEnumerator Func()
{
while(delayTime > 0)
{
delayTime -= Time.deltaTime;
yield return null;
}
}
通过协程的方式,我们可以把变量直接放到协程方法里面就行了,而且每一帧都会被执行(当然是yield return null才可以)
关于更多的协程应用可以参考我上面发的链接。
总结
通过协程的学习,我反正是对协程产生了很大的好感哈哈。