【虚幻引擎UE】UE5 关卡切换解决方案
实现关卡顺滑切换,避免因关卡卸载后,未能加载关卡而出现间歇性白屏。
1. 关卡嵌套:
创建主关卡,并设置为游戏入口。
将需要相互切换的子关卡拖入关卡列表中,并设置为蓝图流送加载
2. 加载具体场景的事件:
这里的as main control变量是游戏实例
游戏实例的创建和设置:
3. 加载场景的通用事件:
在游戏实例中创建这一事件,其中用到的函数在后面会具体展开说明。
用到的变量:
默认值均设置为None。
4. 加载loading UI
这里的Main是一个用户界面变量,这个函数根据自己的需要写就好了
目的是实现关卡切换过程中的等待UI,无关紧要,也可以删掉。
5. 状态设置函数
(1)状态切换-开始执行:
(2)状态切换-结束执行:
6. 判断关卡名称
7. load level 延迟执行函数 C++
创建C++蓝图函数
cpp代码:
// Fill out your copyright notice in the Description page of Project Settings.
#include "myDelegateFunction.h"
void UmyDelegateFunction::loadLevel(FlevelDelegate delegate)
{
delegate.Execute();
}
.h 头文件代码:
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "myDelegateFunction.generated.h"
DECLARE_DYNAMIC_DELEGATE(FsyDelegate);
DECLARE_DYNAMIC_DELEGATE(FlevelDelegate);
/**
*
*/
UCLASS()
class WONDER_TWIN_API UmyDelegateFunction : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
UFUNCTION(BlueprintCallable, Category = "Custom", meta = (Keywords = "loadlevel"))
static void loadLevel(FlevelDelegate delegate);
};
疑难问题:
Q:世界分区开启时,无法使用关卡流送
相关设置:
A:新建空白关卡,把对应的关卡里的东西复制到新的空白关卡里去