
애니메이션 · 약 3분
Animation Blueprint 초기화와 Owner 참조
초기화에서 캐릭터와 이동 컴포넌트를 확보하고, 프리뷰와 재초기화에서도 안전하게 갱신합니다.
Wolfgadeok · 업데이트
클래스가 아니라 실행 중 인스턴스를 찾는다
캐릭터 Blueprint는 캐릭터를 만드는 형식이다. 실제 게임에는 그 형식으로 만든 여러 캐릭터가 있을 수 있고, 각각의 메시가 자신에게 필요한 애니메이션 인스턴스를 사용한다. Animation Blueprint에서 Get Owning Actor를 호출할 때 찾으려는 것은 콘텐츠 브라우저의 Blueprint 파일이 아니라 지금 이 애니메이션을 사용하는 Actor다.
Cast To Character는 임의의 객체를 새 Character로 만드는 기능이 아니다. 실제 대상이 Character 또는 그 자식 타입인지 확인하고, 맞으면 Character의 기능에 접근할 수 있는 참조를 얻는 과정이다. 실패할 수도 있으므로 Cast Failed를 무시한 채 다음 단계에서 변수를 사용하면 안 된다. 정수와 실수의 수치 변환 비유와는 구분한다.
초기화와 업데이트를 나누기
Initialize Animation에서는 사용할 Owner와 이동 컴포넌트 참조를 준비하고, Update Animation에서는 현재 속도나 공중 상태 같은 값을 읽도록 역할을 나눈다. 이 구분은 유용하지만 초기화가 앱 실행 전체에서 무조건 한 번뿐이라고 단정하지 않는다. 메시나 애니메이션 클래스 변경, 재생 환경의 변화로 인스턴스가 다시 준비될 수 있다.
- Initialize Animation에서 Get Owning Actor 또는 설계에 맞는 Pawn Owner 접근 경로를 사용한다.
- 필요한 타입으로 Cast하고 성공한 경우에만 캐릭터와 이동 컴포넌트 참조를 저장한다.
- 실패했을 때는 이전 참조를 남기지 않도록 정리하고, 업데이트가 안전하게 건너뛰도록 구성한다.
- Update Animation에서 유효한 참조인지 확인한 후 필요한 값만 읽는다.
- 메시 교체, 리스폰, Play 종료·재시작에서도 같은 초기화 경로가 안전한지 확인한다.

프리뷰에서 값이 없는 이유
애니메이션 에디터의 프리뷰와 실제 게임 캐릭터는 소유 객체와 환경이 다를 수 있다. 프리뷰에서 Character 참조를 얻지 못했다고 초기화 이벤트가 전혀 실행되지 않았다고 결론 내리면 안 된다. 초기화가 수행되었더라도 예상한 Character 타입의 Owner가 없어서 Cast가 실패했을 수 있다.
프리뷰용 기본값과 런타임에서 읽은 값을 분리하면 에셋을 혼자 열었을 때도 동작을 관찰하기 쉽다. 디버그 대상이 프리뷰 인스턴스인지 실제 게임의 특정 캐릭터인지 확인하는 습관도 중요하다. 잘못된 대상을 보며 변수가 갱신되지 않는다고 판단하지 않도록 한다.
프레임 수를 코드의 전제로 만들지 않는다
Update Animation의 시간 의존 계산에는 전달되는 Delta Time을 사용한다. 모든 환경에서 초당 60번 호출된다고 가정해 상수를 누적하면 프레임률에 따라 결과가 달라진다. Sequence 노드는 여러 실행 가지를 순서대로 시작하는 정리 도구이며 병렬 실행을 보장하지 않는다. 각 가지가 공유 상태를 바꾼다면 읽고 쓰는 순서도 함께 점검한다.