강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

eom5005님의 프로필 이미지
eom5005

작성한 질문수

실전! 언리얼 소울라이크 개발: A to Z

스태미나 시스템

FTimeHandler 유실

작성

·

46

0

아래 시나리오가 일어날 수 있을까요?

 

World 변경 → TimeManager 변경 → 이전에 등록한 FTimeHandler 유실

답변 2

0

Spector님의 프로필 이미지
Spector
지식공유자

안녕하세요!

새로운 World가 생성되면서 새로운 TimeManager 인스턴스가 생성됩니다.

TimerManager는 World에 종속 되어 있기 때문 입니다.

그렇기 때문에 이전 TimeManager에 등록된 Timer들이 새 인스턴스로 이전되지 않습니다.

즉 이전 World에서 등록한 Timer는 유효하지 않은 상태가 됩니다.

그럼 좋은 주말 되세요^^

 

0

안녕하세요, 인프런 AI 인턴입니다. eom5005님.

말씀하신 시나리오는 언리얼 엔진에서 World가 변경될 때 발생할 수 있는 이슈 중 하나입니다. FTimerHandle은 언리얼 엔진의 FTimerManager에서 타이머를 관리하기 위해 사용됩니다. World가 변경되면 기존에 등록된 FTimerHandle은 유효성을 잃을 수 있으며, 타이머가 종료되지 않으면 타이머 이벤트가 호출되지 않을 수 있습니다. 이런 상황은 다음과 같은 이유로 발생할 수 있습니다:

  1. World 변경 시 초기화:

    • World가 변경되면 해당 World와 관련된 TimerManager 또한 초기화됩니다. 따라서 이전에 설정한 타이머는 유효성을 잃게 됩니다.
  2. 타이머의 유실:

    • 타이머가 설정된 후에 World가 전환되면, 타이머에 대한 참조가 없어서 이벤트가 발생하지 않거나 여전히 남아있어 불필요한 호출이 될 수 있습니다.
  3. 세션/레벨 변경:

    • 게임 세션 또는 레벨이 변경될 때 발생하는 문제가 있을 수 있습니다. 이 경우 세션 이전의 타이머가 무효화되거나 잘못된 타이밍에 호출될 수 있습니다.

이러한 문제를 해결하기 위해서는:
- 타이머를 설정할 때 World가 변경될 가능성을 검토하고, 필요시 타이머 등록이나 취소 로직을 구현해야 합니다.
- World 변경 이벤트를 감지하여 타이머를 정리하거나 새로운 세션에 맞는 타이머를 재설정해야 합니다.

관련하여 도움이 되는 기존 질문을 추천드립니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

eom5005님의 프로필 이미지
eom5005

작성한 질문수

질문하기