UE4 全局单例类实例

.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "Tickable.h"
#include "SingletonObject.generated.h"
/**
 * 
 */
UCLASS(Blueprintable, BlueprintType)
class A418_API USingletonObject : public UObject, public FTickableGameObject
{
	GENERATED_BODY()

public:
	USingletonObject(const FObjectInitializer& ObjectInitializer);

	/** Begin FTickableObjectBase Interface */
	virtual void Tick(float DeltaTime) override;
	virtual bool IsTickable() const override;
	virtual TStatId GetStatId() const override;
	/** End FTickableObjectBase Interface */

	/** Begin FTickableObject Interface */
	virtual bool IsTickableWhenPaused() const override;
	virtual bool IsTickableInEditor() const override;
	virtual UWorld* GetTickableGameObjectWorld() const override;
	/** End FTickableObject Interface */

	/** Begin UObject Interface */
	virtual class UWorld* GetWorld() const override;
	/** End UObject Interface */

	UFUNCTION(BlueprintImplementableEvent, meta = (DisplayName = "Tick"))
		void ReceiveTick(float DeltaSeconds);
};

.cpp

// Fill out your copyright notice in the Description page of Project Settings.

#include "SingletonObject.h"

USingletonObject::USingletonObject(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer)
{
}

void USingletonObject::Tick(float DeltaTime)
{
	UE_LOG(LogTemp, Log, TEXT("SingletonObject Tick!!"));
	ReceiveTick(DeltaTime);
}

bool USingletonObject::IsTickable() const
{
	return true;
}

TStatId USingletonObject::GetStatId() const
{
	RETURN_QUICK_DECLARE_CYCLE_STAT(USingletonObject, STATGROUP_Tickables);
}

bool USingletonObject::IsTickableWhenPaused() const
{
	return false;
}

bool USingletonObject::IsTickableInEditor() const
{
	return true;
}

UWorld* USingletonObject::GetTickableGameObjectWorld() const
{
	return GetWorld();
}

UWorld* USingletonObject::GetWorld() const
{
	UWorld* World = (GetOuter() != nullptr) ? GetOuter()->GetWorld() : GWorld;
	if (World == nullptr)
	{
		World = GWorld;
	}
	return World;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值