GameInstance调用可重载的LoadComplete方法通知场景加载流程

GameInstance调用可重载的LoadComplete方法通知场景加载流程

相比Unity的场景加载流程UI界面,UE4的设计更加全面。也就是说,UE4更多的考虑场景加载unity切换场景音效,Unity更加灵活。一般的优化方法是在场景A切场景B的时候使用一个空场景进行转场,这样两个场景的资源数据就不会同时存在于内存中,也可以避免一些bug。

有很多方法可以在项目中切换场景。这是 ClientTravel 方法的示例。调用方法为GEngine->SetClientTravel(),传入参数为UWorld、场景地址URL和开关的参数TavelType

unity场景切换特效_unity切换场景_unity切换场景

接下来在SetClientTravel中,将传入的参数设置成World的上下文信息,等待Tick方法再次调用。

unity切换场景_unity场景切换特效_unity切换场景

unity切换场景_unity场景切换特效_unity切换场景

unity场景切换特效_unity切换场景_unity切换场景

Tick 方法每帧调用一次。接下来只能反向断点调试查看函数调用堆栈。调用顺序为:Tick->TickWorldTravel->Browse->LoadMap。场景加载成功后,GameInstance调用可重载的LoadComplete方法通知场景加载成功

unity场景切换特效_unity切换场景_unity切换场景

unity场景切换特效_unity切换场景_unity切换场景

unity切换场景_unity场景切换特效_unity切换场景

项目中只需要重载LoadComplete方法,然后在场景加载成功后继续调整c++或者通知蓝图进行操作

unity场景切换特效_unity切换场景_unity切换场景

综上所述,UE4场景采用流式加载方式(异步加载?),引擎针对空场景切换进行了优化。相比之下,Unity只提供了场景加载的方法(同步和异步都有,主线程同步卡住,异步不卡住但更慢),空场景切换需要手动写逻辑

PS:我只是一个在UE4练了三个月的新手。文章如有问题unity切换场景,请评论指出,谢谢!