UE4切换关卡场景时让物体不被销毁

UE4的中文讨论是真的少啊。

想找个办法做到类似Unity中DontDestroyOnLoad()的效果。让音乐物体等不会因场景切换而摧毁。找了半天。

GameInstance只能用来保留切换场景时的数据,无法对actor等产生作用。

 

幸好虚幻社区里是有这问题的讨论的,文档不够,社区来凑。中文不够,英文来凑。

 

总之结论是,在窗口-关卡 / Windows-Level中,可以设置固定关卡。再配合上Level Streaming/关卡流加载,就可以做到类似DontDestroyOnLoad()的效果。

就是说,固定关卡中的Actor,在使用流加载方式加载出新关卡物体时,不会被销毁。

默认情况下,当前关卡即为固定关卡。然后,把需要加载的关卡通通拖入窗口的固定关卡中。

UE4切换关卡场景时让物体不被销毁

 

之后,再配合蓝图或者C++里的流加载方式加载它们,就可以了。

UE4切换关卡场景时让物体不被销毁

 

图中,流加载了ThirdPersonExampleMap1这个关卡。并设置为了立即显示。

 

顺带一提,蓝图里的Open Level加载方式,即使是固定关卡的资源也会被卸载掉,所以必须配合流加载方式使用才有效。

 

官方文档:

蓝图流加载:https://docs.unrealengine.com/zh-CN/BuildingWorlds/LevelStreaming/HowTo/StreamWithBlueprints/index.html

关卡设置:https://docs.unrealengine.com/zh-CN/Basics/Levels/LevelsWindow/index.html

事件分发:https://docs.unrealengine.com/zh-CN/ProgrammingAndScripting/Blueprints/BP_HowTo/EventDispatcher/index.html

上一篇:UE4 打包后查看日志


下一篇:【UE4】UMG 生命周期