unity 多线程
- 作者: 簡單_噺
- 来源: 51数据库
- 2020-09-22
不只Unity,大多数游戏引擎都是单线程的,因为大多数引擎都是主循环结构,逻辑更新和画面更新的时间点要求有确定性,如果在逻辑更新和画面更新中引入多线程,就需要做同步而这加大了游戏性程序员(编程关卡的程序员)的开发难度。所以需要异步功能的时候,游戏引擎总是倾向于使用time slicing的策略而不是使用多线程,Unity中的协程(coroutine)yield语法本质就是time slicing。但是多线程也是有好处的,如果不是画面更新,也不是常规的逻辑更新(指包括AI、物理碰撞、角色控制这些),而是一些其他后台任务,比如网络传输,则可以将这个独立出来做成一个工作线程,这需要写Unity游戏的Native扩展。
unity引擎的类都不是线程安全的(mathf不是类); unity没有自带的多线程解决方案,协程是假的多线程,本质还是单线程; unity目前只支持c#3.0,所以用不了高级的c#特征,比如线程池等;
unity引擎的类都不是线程安全的(mathf不是类); unity没有自带的多线程解决方案,协程是假的多线程,本质还是单线程; unity目前只支持c#3.0,所以用不了高级的c#特征,比如线程池等;
推荐阅读
