协程
1. 概述
在 Unity 中,假如想做到在调用一个可能耗时很长的函数时,能够立马返回,这时候,有两种选择协程与线程。
协程可视为代码块一个一个执行,假如某一个代码块阻塞了,整个程序就会阻塞,所以理论上来说,协程还是在主线程中。而对于线程来说,即使某一段代码块阻塞,也不会导致整个程序阻塞。
但是,线程使用的时候需要十分小心,因为 UnityAPI 不是线程安全的,可能导致无法在子线程中使用 UntiyAPI,但基本数据结构还是能够使用的。因此能够用协程的,尽量使用协程。
假如你遇到高开销或长时间处理的操作时,还是可以使用线程的。例如:
- 网络通信
- 寻路
- 人工智能
- 文件操作
2. 使用说明
假如我们想在脚本 Start 时使用协程在控制台中 Debug.Log 一个信息,可以这样操作:
public class TestScript : MonoBehaviour {
IEnumerator LogMessage(string Message)
{
Debug.Log(Message);
yield return