首页 文章 记一次unity的C#多线程在一移动端的的坑
记一次unity的C#多线程在一移动端的的坑
编辑时间:2023-01-11 23:31:49 作者:dashizi 浏览量:1527

最近在重构战斗,主要是改成类似帧同步战斗方案。替换各种第三方库,其中有一个关于动态避障的RVO。

之前用的是Unity很多使用的AStarPahtFinding,这次主要替换的原因是要改为服务器也可以执行,而且要改为定点数。

找到一个RVO2的C#库,简单了解和测试后一下发现性能和效果都要更好。
RVO2 Library - Reciprocal Collision Avoidance for Real-Time Multi-Agent Simulation (unc.edu)

但是一到移动端发现性能极差,犹豫改动比较多,各种排查最后发现是rov2的多线程,还好是开源的。

ThreadPool.QueueUserWorkItem

WaitHandle.WaitAll

这东西应该是微软在PC端上搞的C#的东西,对移动端上估计不友好,只要超过2个以上的线程就效率极低,造成明显的卡顿。

直接改rvo2源码为单线程立马流畅了。

但是这样就完了么,并没有。经过一顿资料查询和朋友讨论后,决定还是尝试用unity自己搞的多线程job system试试。

最后改完后,立马从流畅变成了丝滑。


战斗重构经过了十来天的硬肝,终于算是完成了大部分的工作,基本是除了吃饭睡觉就是在撸代码。有时间再详细记录一下这个血泪过程吧。

来说两句吧
最新评论