Unity协程探究
Unity提供了协程来实现一定程度上的“伪并发”。
众所周知,UnityAPI只能在主线程中调用,如果我们希望通过多线程来实现多个过程的并发处理,那么如果涉及对UnityAPI的操作,则必须转到主线程去执行,比较繁琐。
MonoBehaviour.StartCoroutine可以创建一个协程(Coroutine),
在协程中可以通过yield
语句暂停程序执行或者退出协程,从游戏运行的宏观角度看,它们似乎是在并行一样。
Unity提供了协程来实现一定程度上的“伪并发”。
众所周知,UnityAPI只能在主线程中调用,如果我们希望通过多线程来实现多个过程的并发处理,那么如果涉及对UnityAPI的操作,则必须转到主线程去执行,比较繁琐。
MonoBehaviour.StartCoroutine可以创建一个协程(Coroutine),
在协程中可以通过yield
语句暂停程序执行或者退出协程,从游戏运行的宏观角度看,它们似乎是在并行一样。
函数只是一段代码的执行过程,而方法往往会与某个类型的对象绑定。
方法是OOP的概念,在一个方法的实现中,我们可以通过特定方式访问对象的私有变量、方法,例如C类语言的this指针,Python的self等,在方法的调用过程中,对象往往被隐式传递。
Panic是指程序遇到了(或者由程序主动发起)运行时错误,此时,程序中的函数会立即停止执行,然后执行已经defer过的函数,随后,程序输出错误日志信息,停止运行。
defer关键字可以延迟一个函数的执行,直到这个函数返回,无论是正常的return
返回,还是由于意外情况。
当我们定义一个函数时,例如:
|
|
这种方式只能用在包一级,称为命名函数。这个过程相当于我们定义了一个常量f
,类型为func()
,并且其对应我们刚才定义的函数。
但是有些情况下这种函数定义的方式不够灵活,比如我们希望在调用函数时将某个函数作为参数传入,或者在函数返回时希望返回的是一个函数。