m0_63268912 2024-09-10 23:14 采纳率: 0%
浏览 8

黑神话悟空 虚幻引擎(Unreal Engine)写mod

黑神话悟空 虚幻引擎(Unreal Engine)
尝试写mod

img


按键触发事件中 调用 LoadAsset 会报错
Function 'LoadAsset' can only be called from within the game thread
这段代码怎么改才行呢 求指点

  • 写回答

2条回答 默认 最新

  • 一轮明月照丘壑 2024-09-10 23:15
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在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)
    

    注意这只是一个基础的示例,具体的实现可能需要根据你的需求来调整。你也可能需要处理一些其他的细节,比如在异步任务完成时对资源的使用和错误处理等。具体的代码可能还需要你根据实际的项目情况进行调整和优化。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月10日

悬赏问题

  • ¥15 sqlite加密问题咨询
  • ¥15 appdesigner接收不到udp组播的数据
  • ¥15 谁能解一下这个,限时1个半小时内有酬金
  • ¥15 verilog 非阻塞赋值下的移位拼接错误
  • ¥100 两个按钮控制一个LED
  • ¥15 用C语言写离散数学相关问题
  • ¥30 如何用python的GephiStreamer连接到gephi中,把Python和Gephi的具体操作过程都展示,重点回答Gephi软件的调试,以及如果代码的端口在浏览器中无法显示怎么处理
  • ¥15 ansys机翼建模肋参数
  • ¥15 Sumo软件无法运行
  • ¥15 如何在vscode里搭建stata的编辑环境?