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?
Thread safety, delegates and bPostTickComponentUpdate
相关推荐
UE4 访问网格的顶点数据
UE4自定义GameDebugTool中显示的数据
一款用于UE4的插件,ue4版本必须大于等于4.24。可以实现对xls文件的操作,增删改查。导入该插件后,直接通过蓝图组件就可以对xls文件进行操作。比起使用C++代码操作excel文件,更加方便和快捷。
UE4 socket 数据接收以及发送,功能示例
毕业设计基于C++的一款UE4射击游戏源码。一款UE4射击游戏Demo,包含UE4游戏框架及整套联网射击游戏功能。一款UE4射击游戏Demo,包含UE4游戏框架及整套联网射击游戏功能。一款UE4射击游戏Demo,包含UE4游戏框架及整套...
现实地形导入UE4全流程。制作地形方法有很多种,下文仅为其中一种,选择合适的才是重要的。此方法特点是将现实种的地形用于UE4种呈现!
ue4数据驱动开发
UE4 CanvasUI遮罩UE4 CanvasUI遮罩UE4 CanvasUI遮罩UE4 CanvasUI遮罩UE4 CanvasUI遮罩UE4 CanvasUI遮罩
ue4联机完整项目
该资源为UE4官方文档中文版,资源分为网页和CHM文件均支持离线查看,截止到2018.2的Unreal Engine4官方中文离线文档。
包含常用3500字和标点,英文和特殊字符,Ue4Font字库 直接拖入到工程目录下,文件只适用于UE4!
UE4使用Echart项目
UE4 PAK查看器UE4 PAK查看器UE4 PAK查看器UE4 PAK查看器UE4 PAK查看器UE4 PAK查看器
JSBSimForUe4_ue4_JSBSim_bankxry_UE4JSBSIM_源码.rar.rar
虚幻引擎(UE4)技术基础 PPT课件(共8单元)项目八VR硬件平台搭建.pdf虚幻引擎(UE4)技术基础 PPT课件(共8单元)项目八VR硬件平台搭建.pdf虚幻引擎(UE4)技术基础 PPT课件(共8单元)项目八VR硬件平台搭建.pdf虚幻引擎(UE4)...
UE4和web网页的UI交互
虚幻4UE4程序游戏解包,获取资源等。
UE4、UE5读写Txt文件
这是ue4 4.22.1 engine 版本的例子。实现了通过蓝图把场景中的AStaticMeshActor和两个动态材质实例UMaterialInstanceDynamic 传给c++ 自定义函数参数。 并在自定义函数里面实现两张材质的动态交替变更,其中一张材质...
3DMAX模型 批量导出Fbx格式,FBX模型导入UE4中插件运用