黑神话悟空 虚幻引擎(Unreal Engine)
尝试写mod
按键触发事件中 调用 LoadAsset 会报错
Function 'LoadAsset' can only be called from within the game thread
这段代码怎么改才行呢 求指点
黑神话悟空 虚幻引擎(Unreal Engine)
尝试写mod
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
在Unreal Engine中,报错“Function 'LoadAsset' can only be called from within the game thread”意味着你正在尝试在主线程之外的地方调用LoadAsset函数。在Unreal Engine中,很多函数,特别是涉及到资源加载和管理的函数,必须在游戏的主线程中调用。如果你在异步任务或者其他非主线程中尝试调用这些函数,就会遇到这样的问题。
对于你的代码,可以尝试以下解决方案:
你可以使用UE的异步任务系统来加载资源。例如,你可以使用UObject::QueueAsyncTask
来创建一个异步任务来加载资源。这样,加载资源的操作会在后台线程中进行,不会阻塞主线程。以下是一个可能的修改方案:
RegisterKeyBind(Key.J, function()
Initialize()
local bossKeys = {}
for k, v in pairs(BossConfig.BossList) do
table.insert(bossKeys,k)
end
local monsterKeys = {}
for k, v in pairs(BossConfig.MonsterList) do
table.insert(monsterKeys,k)
end
local BPPlayerController = FindFirstOf("BP_B1PlayerController_C")
local bpPlayer = BPPlayerController.pawn
local realKey = "0036"
local assetPath = BossConfig.BossList[realKey]
-- 使用异步任务加载资源
UObject::QueueAsyncTask(function()
local asset = LoadAsset(assetPath)
-- 这里处理加载完成的资源,比如将其赋给某个对象或进行其他操作
end)
end)
注意这只是一个基础的示例,具体的实现可能需要根据你的需求来调整。你也可能需要处理一些其他的细节,比如在异步任务完成时对资源的使用和错误处理等。具体的代码可能还需要你根据实际的项目情况进行调整和优化。