场景中有大量使用的StateTree的小兵时,我想通过设置某些不重要的小兵的StateTreeComponent的TickInterval值的来降低其Tick频率,但是StateTreeComponent在的函数TickComponent内会因为调用了ScheduleTickFrame(Context.GetNextScheduledTick())而将我的TickInterval值覆盖,导致我无法降低Tick频率,想请教一下有没有推荐的方法能降低整个StateTreeComponent上的StateTree的计算频率。
重现步骤
你好,
StateTreeComponent的TickInterval会被覆盖,是因为 StateTree 内部调度的优先级更高。
这个问题可以通过使用 StateTree 内部的 Tick 来控制,具体可参考FStateTreeScheduledTick::MakeCustomTickRate。
也可以通过关闭 Component Tick,使用一个定制的Manager来完全接管 Tick 调度,这样
可以根据实际项目,通过不同的条件,做分帧更新,固定 Budget的调度。这也是大规模 AI的常用方案。
希望这个解答了你的问题。如果您有相关的问题,请随时联系,谢谢。
Henry Liu
感谢回复
谢谢,我将先关闭这个案例,如果您有任何后续问题,请随时联系。