项目中使用LevelStreamingDynamic控制关卡加载卸载,多次在两个关卡间切换会触发“Couldn’t find ULevel object in package XXX”警告,调试发现ULevelStreaming::AsyncLevelLoadComplete时InLoadedPackage已经被标记为RF_MirroredGarbage,导致后续获取到的World对象PersistentLevel为空指针。
[Image Removed]
[Image Removed]
请问这个是已知问题吗?
TonyChen1
(TonyChen1)
2
你好,仅从这个报错看很难说是什么原因导致的,不知道是在runtime还是PIE下,是网络游戏下的客户端还是服务端的报错,不过看起来是GC引起的问题。很可能在这个之前就已经报错了,可能得查一下在这之前有没有什么报错日志
这个是之前的用户反馈,可以参考一下
[Content removed]
环境是打包后的Windows客户端,和之前这个用户的反馈应该是一个问题。
修改GARBAGE_COLLECTION_KEEPFLAGS为RF_NoFlags,在编辑器PIE环境下也可以复现问题。
目前怀疑LoadPackageAsync接口在触发CompletionDelegate前,已加载的Package存在一段时间没有引用,可以被GC标记
明天会尝试制作一个最小化复现的工程