`
aigo
  • 浏览: 2644473 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

[UE4]如何跨线程访问GameThread中的数据

UE4 
阅读更多

UE4中如果在自己创建的FRunnable线程中取访问引擎相关的API,比如你想在非GameThread中创建UI,运行时UE4时会给assert错误:

Assertion failed: IsInGameThread() [File:D:\BuildFarm\buildmachine_++UE4+Release-4.11\Engine\Source\Runtime\Slate\Public\Framework\Application\SlateApplication.h] [Line: 156] 

 

如何跨线程开访问UE4的API?

看了两个帖子,都说只能搞个queue,自定义线程往queue塞数据,Tick函数中对这个queue读取。因为GameThread中的数据不是线程安全的,所以只能通过这种方式。

 

自己创建的线程哪些不能做?官方文档上的回答:

https://wiki.unrealengine.com/Multi-Threading:_How_to_Create_Threads_in_UE4#What_Not_to_Do

  • Do not try to modify, create, or delete UObjects from other threads!

You can prepare all the data / do all the calculations, but only the game thread should be actually spawning / modifying / deleting UObjects / AActors.

  • Dont try to use TimerManager outside of the game thread :)
  • Don't try to draw debug lines/points etc, as it will likely crash, ie DrawDebugLine(etc...)

 

参考:

How do I execute code on the Game thread from an FRunnable thread?

https://answers.unrealengine.com/questions/262585/how-do-i-execute-code-on-the-game-thread-from-an-f.html

Thread safety, delegates and bPostTickComponentUpdate

https://answers.unrealengine.com/questions/30413/thread-safety-delegates-and-bposttickcomponentupda.html

 

分享到:
评论

相关推荐

    UE4 访问网格的顶点数据

    在UE4(Unreal Engine 4)中,访问网格的顶点数据是图形编程和游戏开发中的重要操作,尤其在自定义着色器或者进行几何处理时。这涉及到引擎内部的渲染管线和数据结构,因此深入理解这个过程对优化游戏性能和实现复杂...

    UE4自定义GameDebugTool中显示的数据

    下面我们将深入探讨如何在UE4中实现自定义GameDebugTool,并展示它能显示哪些数据。 首先,一个自定义的GameDebugTool通常会包含以下几个关键部分: 1. **数据收集**:你需要确定要显示哪些数据。这可能包括游戏...

    UE4json插件

    UE4(Unreal Engine 4)是Epic Games开发的一款强大的游戏...通过以上介绍,我们可以看出UE4json插件在游戏开发中的核心作用,它简化了UE4与Web服务器之间的数据交互,提升了开发效率,是现代游戏开发中的重要工具。

    现实地形导入UE4全流程

    从获取DEM数据开始,到转换格式,处理地形,最后到UE4中导入制作地形,每一步都至关重要。通过这个流程,开发者能够将现实世界的地形精确地复刻到游戏中,为玩家提供更加逼真的体验。重要的是,每一步都要确保数据的...

    UE4官方中文文档.rar

    《UE4官方中文文档》是Unreal Engine 4(简称UE4)用户的重要参考资料,它提供了详尽的技术指导和教程,帮助开发者深入了解和熟练运用这款强大的游戏开发引擎。UE4是由Epic Games开发并维护的,它在游戏、影视、建筑...

    UE4和web网页的UI交互

    在UE4中,可以利用第三方库如WebSocket++或者直接使用C++实现WebSocket客户端,与Web服务器进行数据交换。这样,UE4场景中的变化可以实时反映到网页上,反之亦然。 五、蓝图实现交互 UE4的蓝图系统是其的一大亮点,...

    UE4程序嵌入WINFORM

    将UE4嵌入WinForm中,开发者可以利用UE4的3D渲染能力,同时保持WinForm的窗口管理、数据处理和用户交互功能。这个过程涉及到几个关键步骤: 1. **创建WinForm项目**:首先,你需要在Visual Studio中创建一个新的...

    UE4使用Echart项目

    在本文中,我们将深入探讨如何在Unreal Engine 4(简称UE4)中集成和使用ECharts库,以便为你的游戏或应用创建丰富的数据可视化功能。ECharts是一款由百度开发的开源JavaScript图表库,它提供了多种图表类型,如折线...

    ue4 联网配置

    在UE4(Unreal Engine 4)中进行联网配置是一项重要的技术工作,它涉及到游戏的多人在线体验。UE4提供了一套完整的工具和框架,使得开发者可以构建支持多人在线的游戏项目。下面将详细讲解ue4联网配置的相关知识点,...

    kinent 插件 ue4中使用

    在UE4蓝图中,可以使用插件提供的节点来处理和解析Kinect数据。例如,“Get Skeleton”节点用于获取骨架数据,可以用于追踪玩家的手部、头部等关键部位;“Get Color Frame”节点则可以获取色彩图像,用以显示或作为...

    UE4串口,蓝图可调用,4.24.3亲测可使用,有详细教程

    2. **接收数据**:在UE4串口插件中,应该包含一个接收数据的蓝图节点,用于从串口读取接收到的信息。这个节点可能有一个输入参数,如串口号,以及一个或多个输出,例如接收到的数据字符串和接收状态。 3. **读写...

    ue4插件DirectExcel.rar

    总的来说,DirectExcel是UE4生态中一个高效的数据管理和交互工具,它将Excel的强大功能与UE4的动态环境相结合,为游戏开发带来新的可能性。通过熟练掌握这款插件,开发者可以更加专注于游戏逻辑和创意实现,而非繁琐...

    JSBSimForUe4_ue4_JSBSim_bankxry_UE4JSBSIM_源码.rar.rar

    2. **数据流管理**:JSBSim的计算结果需要实时更新到UE4中的3D模型,这可能涉及到UE4的蓝图系统或者C++插件开发。 3. **物理引擎同步**:确保UE4的物理引擎与JSBSim的飞行模型保持一致,处理好碰撞、重力和其他物理...

    ue4中文文档chm和网页的

    UE4,全称为Unreal Engine 4,是由Epic Games开发的一款强大且广泛使用的实时3D创作工具,尤其在游戏开发、影视制作、虚拟现实(VR)、增强现实(AR)等领域有着广泛应用。UE4提供了丰富的功能,包括物理模拟、光照...

    UE4离线官方中文文档

    《UE4离线官方中文文档》是针对Unreal Engine 4(简称UE4)的一份完整、详尽的中文参考资料,适用于2018年2月之前的所有版本。UE4是由Epic Games开发的一款强大的游戏引擎,广泛应用于游戏开发、虚拟现实、影视特效...

    UE4_LEJSON蓝图插件v4.19

    而LEJSON蓝图插件正是为了解决UE4中处理JSON数据的问题,它为UE4提供了便捷的JSON解析和操作功能。 LEJSON蓝图插件v4.19是专为UE4 4.19版本设计的一个高效工具,旨在帮助开发者轻松地在蓝图中解析、创建和修改JSON...

    UE4 电脑ID和获取插件

    在UE4(Unreal Engine 4)开发过程中,有时候我们需要获取电脑的唯一标识符或硬件信息,例如在实现用户认证、设备绑定等场景时。在UE4 4.25及之后的版本中,蓝图系统不再支持直接获取这些信息,这给开发者带来了一定...

    UE4帮助文档 UE4离线帮助文档 UE4API

    文档中的"ue4API.chm"是一个Windows帮助文件,这种格式允许用户在本地快速查找和浏览内容,无需连接互联网。CHM文件是Microsoft的HTML帮助文件,它将一系列网页集合在一起,形成一个可搜索的数据库,非常适合用来...

    UE4使用C++在蓝图中实现打开外部exe程序功能(含源码)

    在UE4(Unreal Engine 4)中,开发者经常需要集成各种自定义功能,其中之一就是通过C++代码在蓝图中实现打开外部exe程序。这个功能对于游戏中的交互性或者工具集成非常有用,例如启动辅助编辑器、执行数据分析脚本等...

Global site tag (gtag.js) - Google Analytics