在游戏实例里保存关卡名称
2023年11月24日 2024年1月11日
Startup Level Name
FName
-
NAME_None
可以用来初始化FName对象, 表明对象文本未设置也是默认初始化FName时其包含的字符串
-
判断字符串是否为"None"
1/** True for FName(), FName(NAME_None) and FName("None") */ 2FORCEINLINE bool IsNone() const 3{ 4#if PLATFORM_64BITS && !WITH_CASE_PRESERVING_NAME 5 return ToUnstableInt() == 0; 6#else 7 return ComparisonIndex.IsNone() && GetNumber() == NAME_NO_NUMBER_INTERNAL; 8#endif 9}
在游戏实例里添加关卡名称
- 添加属性: 关卡名称
protected
ShootThemUp: STUGameInstance.h
1UPROPERTY(EditDefaultsOnly) 2FName StartupLevelName = NAME_None;
- 添加接口: 返回关卡名称
public
ShootThemUp: STUGameInstance.h
1FName GetStartupLevelName() const { return StartupLevelName; }
STUMenuWidget中从游戏实例获取关卡名
可以检查关卡是否存在
ShootThemUp: Menu/UI/STUMenuWidget.cpp
1#include "STUGameInstance.h" 2#include "Engine/World.h" 3 4DEFINE_LOG_CATEGORY_STATIC(LogSTUMenuWidget, All, All); 5 6// OnStartGame 7 8if (!GetWorld()) return; 9 10const auto STUGameInstance = GetWorld()->GetGameInstance<USTUGameInstance>(); 11if (!STUGameInstance) return; 12 13if (STUGameInstance->GetStartupLevelName().IsNone()) 14{ 15 UE_LOG(LogSTUMenuWidget, Error, TEXT("StartupLevelName is none")); 16 return; 17} 18 19UGameplayStatics::OpenLevel(GetWorld(), STUGameInstance->GetStartupLevelName());
查看
-
直接运行
-
NAME_None
对应字符串
BP_STUGameInstance
-
设置关卡名
BP_STUGameInstance
- Startup Level Name DefaultMap