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

在UE4中,从自定义的FRunnable线程尝试访问引擎API,如创建UI,会导致运行时错误。为解决此问题,通常建议使用队列,将数据在非GameThread中准备并添加到队列,然后在GameThread的Tick函数中处理。官方文档明确指出不应在非GameThread中修改、创建或删除UObjects,以及不应使用TimerManager、绘制调试线条等。可以参考相关论坛讨论找到解决方案。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值