目前,我正在使用蓝图脚本来生成和删除半个飞行棋子中的大约60个演员。 这会产生帧率峰值,我已经读到这是一个非常繁重的过程。
显然,我想通过在C ++中放置相同的逻辑来提高此过程的性能。 但我想首先了解一些事情,以确保我所做的是对的。
1)C ++中的spawnActor
函数本身 - 比蓝图节点更快吗?
我感谢所有人花时间阅读本文,并且非常感谢任何帮助:)
答案 0 :(得分:1)
你不能说C ++的SpawnActor更快,因为Blueprint的SpawnActor最终会导致C ++ SpawnActor。但是当然如果直接编写C ++代码,那么它可以节省调用几个函数将Blueprint节点路由到C ++函数的时间。因此,对于SpawnActor的峰值,我不会因为调用Blueprint SpawnActor而认为它,即调用C ++不会修复它。
SpawnActor本身确实有它的成本,所以连续60次调用肯定会产生尖峰。我不太确定SpawnActor中有多少开销,但至少我猜测为这些新Actors分配内存需要花费一些时间。此外,如果您的Actor模板有很多组件,那么它需要更多时间。因此,一种常见的技术是使用Actor Pool预先生成一些Actors并重用它们。
答案 1 :(得分:0)
C ++总是比蓝图更快,因为最后是基于模板,所以你的编译和错误修复不会很容易。 由于CPU时间的原因,字符数量总是会影响性能,但它没问题。您必须考虑到基于UE4迭代器和专用容器访问字符,因此它们已经过优化且线程安全。