时序问题

有依赖关系的两段代码,执行时间不确定,所引起的问题。

 

举例

1、Shooter引用了Weapon,Weapon引用了Shooter。射击者需要持有枪,枪需要判断是否有主人(枪的持有者)。在枪要引用持有者的时候,可以使用Delay一段时间(1秒,甚至更短)在引用持有者就没问题了。

2、UI引用Weapon。在UI中使用Weapon对象的时候,可能Weapon还没有创建出来,在UI中可以可以Delay一段时间(例如1秒,甚至更短时间都可以)等Weapon创建完成在引用Weapon

3、UI计算Size。计算Size需要在UI被创建才能正确计算Size,也可以使用Delay延迟,等UI被创建之后再计算Size,这样才能得到正确的结果。

 

解决时序问题的2个办法

1、Delay

2、明确调用顺序。在我们能够控制调用顺序的时候,可以采用这个办法。

 

[UE4]时序问题

一、游戏主循环的“处理游戏逻辑”还可细分为上图所示的右侧循环步骤

二、对所有Actor进行处理,不光是上图示的事件,可能还有其他的输入事件也是需要在“处理游戏逻辑”里面处理

三、所有的Actor在处理过程中会发生变化,比如在某个Actor的Beginplay里面创建了另外一个Actor,那么待处理的Actor列表就+1了,那么新增的actor是不是在当前帧处理呢?这可是不一定的,这要看引擎的作者是怎么实现的,这并没有明确的规定。

四、还有可能是Actor的销毁,Actor的销毁不会被立即释放,而是会在当前帧结束之后才被释放,

五、假设2个Actor同时产生了,那么这2个Actor的Beginplay事件哪个先被执行呢?这个真是无法确定的。因此就会产生时序问题。

 

相关文章:

  • 2021-11-25
  • 2021-09-09
  • 2021-08-07
  • 2021-11-04
  • 2022-01-04
  • 2021-08-03
  • 2022-12-23
  • 2021-09-27
猜你喜欢
  • 2021-10-22
  • 2021-11-04
  • 2022-12-23
  • 2022-01-13
  • 2022-12-23
  • 2021-11-14
  • 2021-10-01
相关资源
相似解决方案