UE4基礎:用TimerManager實現一個簡單的計時器

//AMyActor.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyActor.generated.h"

UCLASS()
class GAMECPP_API AMyActor : public AActor
{
	GENERATED_BODY()
protected:
	virtual void BeginPlay() override;
private:
	struct FTimerHandle ScreenTimerHandle;//句柄
	int32 GameTime;
	void TimerCallback();//回調函數
};
//AMyActor.cpp
#include "MyActor.h"
#include "TimerManager.h"

void AMyActor::BeginPlay()
{
	Super::BeginPlay();
	GameTime = 0;
	UWorld* world = this->GetWorld();//world可能爲空,所以要判斷一下
	if(world)
	{
		world->GetTimerManager().ClearTimer(ScreenTimerHandle);
		world->GetTimerManager().SetTimer(ScreenTimerHandle,this,&AMyActor::TimerCallback,2.0f,true);
	}
}

void AMyActor::TimerCallback()
{
	GEngine->AddOnScreenDebugMessage(1,1.0,FColor::Green,FString::FromInt(GameTime++));
}

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