zoukankan      html  css  js  c++  java
  • [UE4]时序问题

    时序问题

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

    举例

    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、明确调用顺序。在我们能够控制调用顺序的时候,可以采用这个办法。

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

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

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

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

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

  • 相关阅读:
    036 Python进阶小结
    035 异常处理
    033 数据类型分类
    034 Python深浅拷贝
    032 集合类型内置方法
    031 字典类型内置方法
    XML删除节点
    追加XML
    XML文档的读、写
    XML文档的创建
  • 原文地址:https://www.cnblogs.com/timy/p/10180505.html
Copyright © 2011-2022 走看看