게임 개발/Unreal Engine

[UE] Unreal Engine UObject에서 Tick함수 사용하는 법

지노윈 2023. 11. 18. 21:29
반응형

 

https://lykanstudio.tistory.com/83

 

// Test.h

#include "Tickable.h"
class PROJECTTest_API UTest : public UObject, public FTickableGameObject
{
	GENERATED_BODY()
	
public:	
	UTest();

public:
	/** 사용할 Tick함수 입니다. */
	virtual void Tick(float DeltaTime) override;
	/** Tick을 활성화할지 여부를 반환하는 함수입니다. */
	virtual bool IsTickable() const override;
	/** 에디터에서 Tick을 활성화할지 여부를 반환하는 함수입니다. 일반적으로 true를 반환하여 에디터에서도 객체의 Tick을 활성화할 수 있도록 설정합니다. */
	virtual bool IsTickableInEditor() const override;
	/** 게임이 일시 정지되었을 때 Tick을 계속해서 호출할지 여부를 반환하는 함수입니다. */
	virtual bool IsTickableWhenPaused() const override;
	/** 객체의 고유한 통계 식별자를 반환하는 함수입니다. */
	virtual TStatId GetStatId() const override;
	/** 객체가 존재하는 World를 반환하는 함수입니다. */
	virtual UWorld* GetWorld() const override;
    
protected:
	/** Tick 함수의 활성화/비활성화를 설정하는 변수입니다. */
	UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "BaseSkill")
	bool bTickable;

	/** 게임이 일시 정지되었을 때 Tick 함수를 호출할지 나타내는 변수입니다. */
	UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "BaseSkill")
	bool bTickableWhenPaused;
}
// Test.cpp

UTest::UTest()
{
	bTickable = false;
	bTickableWhenPaused = false;
}

void UTest::Tick(float DeltaTime)
{
}

bool UTest::IsTickable() const
{
	return bTickable;
}

bool UTest::IsTickableInEditor() const
{
	return bTickable;
}

bool UTest::IsTickableWhenPaused() const
{
	return bTickableWhenPaused;
}

TStatId UTest::GetStatId() const
{
	return TStatId();
}

UWorld* UTest::GetWorld() const
{
	return GetOuter()->GetWorld();
}