如果对某一个组件同一帧内调用两次MarkActorComponentForNeededEndOfFrameUpdate,并且bForceGameThread为True的情况下,是不是肯定会崩溃。因为bForceGameThread的情况下,组件会添加到ComponentsThatNeedEndOfFrameUpdate_OnGameThread,所以在第二次Check时判断check(ComponentsThatNeedEndOfFrameUpdate.IsValidIndex(ArrayIndex));就会出现问题
我的理解没有错误吧,如果是的话,是否这里的Check根据bForceGameThread 修改一下?
Liu.Wei
(Liu.Wei)
2
Hi,
你好,第二次应该不会走到check(ComponentsThatNeedEndOfFrameUpdate.IsValidIndex(ArrayIndex));,因为第二次CurrentState 不等于 EComponentMarkedForEndOfFrameUpdateState::Marked而是EComponentMarkedForEndOfFrameUpdateState::MarkedForGameThread
确实是这样,不过也定位了问题,还有一个函数RequiresGameThreadEndOfFrameRecreate需要重写,否则某一次可能使用EComponentMarkedForEndOfFrameUpdateState::Marked,而另外又可能使用EComponentMarkedForEndOfFrameUpdateState::MarkedForGameThread。
Liu.Wei
(Liu.Wei)
4
好的,请问这个问题不是引擎的问题吧?如果不是的话,后续如果有问题再继续交流。