UE4基礎:自定義單例類(Singleton Class)

《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();

在藍圖中調用

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章