和《UE4基礎:自定義GameInstance》的方法類似。和Godot不同的是UE4只能定義一個單例類,可以用它作爲其它單例類的“根”
新建類
要繼承於UObject
C++實現
主要是實現一個獲取實例的方法,這樣就不用通過GEngine
獲取完再類型轉換了。
可以根據需要標記爲藍圖可調用
//GameSingleton.h
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "UObject/ObjectMacros.h"
#include "GameSingleton.generated.h"
UCLASS(Blueprintable,BlueprintType)
class GAMECPP_API UGameSingleton : public UObject
{
GENERATED_BODY()
UFUNCTION(BlueprintCallable)
static UGameSingleton* GetInstance();
};
GameSingleton.cpp
#include "GameSingleton.h"
UGameSingleton* UGameSingleton::GetInstance()
{
if (GEngine)
{
UGameSingleton* Instance = Cast<UGameSingleton>(GEngine->GameSingleton);
return Instance;
}
return nullptr;
}
設置爲GameSingleton
在C++中調用
UGameSingleton* GameSingleton = UGameSingleton::GetInstance();