时序问题

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

举例

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事件哪个先被执行呢?这个真是无法确定的。因此就会产生时序问题。

[UE4]时序问题的更多相关文章

  1. UE4命令行使用,解释

    命令行在外部 从命令行运行编辑项目 1 导航到您的[LauncherInstall][VersionNumber]\Engine\Binaries\Win64 目录中. 2 右键单击上 UE4Edit ...

  2. UE4新手引导之下载和安装虚幻4游戏引擎

    1) 进入虚幻4的官方主页(https://www.unrealengine.com/) 这里你可以获得关于虚幻4的最新资讯,包括版本更新.博客更新.新闻和商城等.自2015年起,该引擎已经提供免费下 ...

  3. UE4新手引导入门教程

    请大家去这个地址下载:file:///D:/UE4%20Doc/虚幻4新手引导入门教程.pdf

  4. [UML]UML系列——时序图(顺序图)sequence diagram

    系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...

  5. ue4 c++学习推荐

    我由易到难推荐,不过在此之前还是先看看官方对于VS设置的推荐: https://docs.unrealengine.com/latest/INT/Programming/Development/Vis ...

  6. 如何创建独立的UE4服务端

    原文作者:@玄冬Wong 转载请注明原文出处:http://aigo.iteye.com/blog/2268777 这是论坛上对UE服务端功能的回答,意思是UE4提供了主流MMO网游服务端所具备的特性 ...

  7. 《Inside UE4》目录

    <Inside UE4>目录 InsideUE4 UE4无疑是非常优秀的世界上最顶尖的引擎之一,性能和效果都非常出众,编辑器工作流也非常的出色,更难得宝贵的是完全的开源让我们有机会去从中吸 ...

  8. 如何使用的Ue4自带的SQLiteSupport

    在UE4.6版本加入的模块.可以让开发者使用SQLite数据库.SQlite是个轻量型的本地数据库. 我下面就来介绍一下如何使用这个模块. 第一步:下载SQLite源代码以及SQLite GUI管理工 ...

  9. 【UE4游戏开发】安装UE4时报SU-PQR1603错误的解决方法

    马三在开发过程中一直用的都是UE4.9版本(很久没有更新了.),因为功能都够用,所以也懒得去更新.这不最近UE4 发布了最新的4.14版本,本来想尝个鲜,试试新版的UE引擎怎么样,结果这一安装上就一直 ...

随机推荐

  1. JDBC封装

    在模拟servlet调用dao中,我们发现在dao的实现类中有许多重复代码,我们可以将其封装起来. 步骤: 一. 创建一个类 DBUtil 1加载驱动和建立链接的代码 完全一样 加载驱动写到静态代码快 ...

  2. MySQL Config--参数system_time_zone和参数time_zone

    全局参数system_time_zone系统时区,在MySQL启动时会检查当前系统的时区并根据系统时区设置全局参数system_time_zone的值. The system time zone. W ...

  3. taro 消息机制

    Taro 提供了 Taro.Events 来实现消息机制,使用时需要实例化它 同时 Taro 还提供了一个全局消息中心 Taro.eventCenter 以供使用,它是 Taro.Events 的实例 ...

  4. 关键字:this、ref、out

    Class1.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  5. redis 如何查看所有的key

    可以使用KEYS 命令 KEYS pattern 例如, 列出所有的key redis> keys * 列出匹配的key redis>keys apple* 1) apple1 2) ap ...

  6. kali 安装qq

    使用的是longene TM2013 下载地址(百度云):http://pan.baidu.com/s/1dFx8azv 安装: 64位的需要安装32位依赖文件 用这条命令 apt-get insta ...

  7. java实例检查端口是否被占用

    127.0.0.1代表本机 主要的原理是:Socket socket = new Socket(Address,port);#address代表主机的IP地址,port代表端口号 如果对该主机的特定端 ...

  8. 【springBoot】之配置文件application

    springboot使用一个全局的配置文件application.properties或者是application.yml,放在在src/main/recesources下或者在类路径下的/confi ...

  9. Netty Tutorial Part 1.5: On Channel Handlers and Channel Options [z]

    Intro: After some feedback on Part 1, and being prompted by some stackoverflow questions, I want to ...

  10. 【Mysql+shell】查询结果导出到文件,文件数据导入到数据库

    Shell: 执行Mysql查询,并将查询结果导出到文件 直接使用Mysql执行查询 mysql> use xxx_dbName; mysql> select * from log_06 ...