반응형
FTickableGameObject는 언리얼 엔진에서 Actor나 Component에 의존하지 않고 전역적인 Tick을 받을 수 있는 인터페이스입니다. 이를 통해 UI 매니저, 상태 관리자, 게임 시스템 싱글턴 등 다양한 시스템에 독립적인 틱 기반 로직을 구현할 수 있습니다.
✅ 기본 개념
FTickableGameObject
는 UObject를 상속받지 않는 순수 클래스에서도 사용할 수 있으며, 최소한 다음 세 가지 함수를 구현해야 합니다.
virtual void Tick(float DeltaTime)
virtual bool IsTickable() const
virtual TStatId GetStatId() const
📄 필수 구현 예제
class FMyTickableObject : public FTickableGameObject
{
public:
virtual void Tick(float DeltaTime) override
{
UE_LOG(LogTemp, Log, TEXT("Tick: %f"), DeltaTime);
}
virtual bool IsTickable() const override
{
return true;
}
virtual TStatId GetStatId() const override
{
RETURN_QUICK_DECLARE_CYCLE_STAT(FMyTickableObject, STATGROUP_Tickables);
}
};
이렇게 구현된 객체는 게임이 실행 중일 때 매 프레임마다 Tick()이 호출됩니다.
⏸ 게임이 Paused 상태일 때도 Tick이 동작하는가?
정답: 예, 가능합니다.
FTickableGameObject는 IsTickableWhenPaused()
라는 가상 함수를 통해, 게임이 일시정지 상태에서도 Tick을 받을 수 있도록 설정할 수 있습니다.
🧪 Paused 상태에서도 Tick 받기 예제
class FPausedTickableObject : public FTickableGameObject
{
public:
float ElapsedTime = 0.0f;
virtual void Tick(float DeltaTime) override
{
ElapsedTime += DeltaTime;
UE_LOG(LogTemp, Log, TEXT("ElapsedTime while paused: %f"), ElapsedTime);
}
virtual bool IsTickable() const override
{
return true;
}
virtual bool IsTickableWhenPaused() const override
{
return true; // ✅ Paused 상태에서도 Tick 허용
}
virtual TStatId GetStatId() const override
{
RETURN_QUICK_DECLARE_CYCLE_STAT(FPausedTickableObject, STATGROUP_Tickables);
}
};
이 코드는 게임이 Paused 상태에서도 계속 ElapsedTime을 증가시키며 동작합니다. 타이머, 로딩 상태 모니터링, 서버 응답 대기 등 일시정지와 무관한 시스템에 유용합니다.
📌 사용 시 주의사항
- FTickableGameObject는 전역 틱 리스트에 등록되므로, Tick 호출 순서 제어가 어렵습니다.
- 이 객체들은 UWorld 컨텍스트와 무관하게 동작하므로, 다중 월드나 PIE 환경에서 유의해야 합니다.
- Tick을 멈추고 싶을 경우
IsTickable()
에서 false를 반환하도록 하면 됩니다.
✅ 언제 사용하면 좋은가?
- UI 매니저, 로딩 매니저처럼 Actor와 무관한 클래스에서 Tick이 필요할 때
- 게임이 일시정지 상태에서도 동작해야 하는 기능 (예: 시간 추적, 서버 통신)
- 씬 전체에 적용되는 싱글턴 스타일 매니저 클래스
📄 공식 문서
반응형
'Unreal Engine' 카테고리의 다른 글
언리얼 엔진 TArray 완전정복 (추가, 삭제, 검색, 주의사항까지) (0) | 2025.05.07 |
---|---|
언리얼 블루프린트 vs C++ 뭐가 더 좋을까? (초보 개발자 필독 비교 가이드) (1) | 2025.05.06 |
Unreal Engine iOS에서 LaunchURL 동작 오류 대응 가이드 (iOS 18 대응) (0) | 2025.05.05 |
FDateTime 완전정복 (UTCNow, UnixTime, Timeout, 문자열 포맷) (2) | 2025.05.04 |
언리얼 델리게이트 완전정복 (Single, Multicast, Dynamic, Event, Params) (0) | 2025.05.03 |