inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)

spine을 animator로 교체

해결된 질문

439

Jong Wiz

작성한 질문수 13

0

안녕하세요

3주 차 코드로 공부하고 있는 중 spine 을 animator controller로 교체하려고 하는데요.

 

Creature.cs 의

public virtual void SetInfo(int templateID)

{

.

.

SkeletonAnim.skeletonDataAsset = Managers.Resource.Load<SkeletonDataAsset>(CreatureData.SkeletonDataID);

SkeletonAnim.Initialize(true);

// Register AnimEvent

if (SkeletonAnim.AnimationState != null)

{

	SkeletonAnim.AnimationState.Event -= OnAnimEventHandler;

	SkeletonAnim.AnimationState.Event += OnAnimEventHandler;

}

부분에서
SkeletonAnim.skeletonDataAsset = Managers.Resource.Load<SkeletonDataAsset>(CreatureData.SkeletonDataID); 는

캐릭터 간 다른 애니메이션을 사용하기 위해 json에서 읽어온 animator 파일을 지정하는 걸로 이해하고

Animator Controller로 교체했는데요.

BaseObject.cs

public Animator SkeletonAnim { get; private set; }

Creature.cs

public virtual void SetInfo(int templateID)

{

.

.

SkeletonAnim.runtimeAnimatorController = Managers.Resource.Load<RuntimeAnimatorController>(CreatureData.SkeletonDataID); // Animator Controller로 교체

// Register AnimEvent

if (SkeletonAnim.AnimationState != null)

{

	SkeletonAnim.AnimationState.Event -= OnAnimEventHandler;

	SkeletonAnim.AnimationState.Event += OnAnimEventHandler;

}

 

SkeletonAnim.AnimationState.Event -= OnAnimEventHandler;

SkeletonAnim.AnimationState.Event += OnAnimEventHandler;

이 부분은 왜 사용하는지 어떻게 수정해야 되는지 모르겠습니다.

 

C# unity MMORPG

답변 1

1

인프런 AI 인턴

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

JongWiz님, Unity에서 Spine 애니메이션을 Unity의 Animator로 교체하는 작업을 수행 중이시군요.

Spine의 AnimationState.Event는 Spine 애니메이션에서 특정 이벤트가 발생했을 때 호출되는 콜백을 등록하기 위한 것입니다. Unity의 Animator에서는 이벤트 시스템이 다르므로, Animator에서 이벤트를 처리하는 또 다른 방식을 사용해야 합니다.

Animator에서 애니메이션 이벤트를 처리하는 일반적인 방법은 애니메이션 클립에 직접 이벤트를 추가하고, 해당 이벤트가 발생할 때 호출될 메서드를 스크립트에 정의하는 것입니다. 예를 들어 Animator에서 애니메이션 클립에 이벤트를 추가하고, 해당 이벤트가 발생할 때 호출될 함수 OnAnimEvent를 정의하는 코드는 다음과 같습니다.

Animator에서 사용할 수 있는 애니메이션 이벤트는 Animation Clip 내에서 정의할 수 있습니다. Unity 에디터에서 Animation Clip을 열고 Event 마커를 추가하여 스크립트의 메서드 이름을 지정할 수 있습니다. 런타임 중에 Animator 컴포넌트가 해당 이벤트를 애니메이션 타임라인에 도달하면 메서드를 호출하게 됩니다.

따라서 SkeletonAnim.AnimationState.Event 대신 Unity 애니메이션 클립에 이벤트를 추가하고 이를 처리할 메서드를 스크립트에 작성해야 합니다. 예를 들면 다음과 같습니다.

public void OnAnimEvent()
{
    // 애니메이션 이벤트가 발생했을 때 수행할 로직
}

그리고, 이 OnAnimEvent 함수는 Unity 에디터의 애니메이션 클립 이벤트에서 호출하도록 설정해야 합니다.

실제 코드 구현 시에는 기능에 따라 메서드명과 로직이 달라질 수 있으니 참고하시어 구현하시길 바랍니다. Unity 공식 문서의 애니메이션 이벤트 섹션을 확인하시면 유용한 정보를 얻으실 수 있습니다.

애니메이션 이벤트에 대한 추가 설명이나 예제가 필요하다면, Unity 공식 문서를 참조하시기 바랍니다. 질문에 대한 답변이 도움이 되셨기를 바랍니다.

수업질문은 아닌데요^^

0

60

1

UI 자동화 관련 문의입니다.

0

109

1

9주차 npc 생성 안되는 이슈. Custom Tile 깨짐

0

108

1

44강 Stage 분할 Cannot Find 에러 관련

0

82

1

8주차 ExtralCell 추가됐을 때 서로 공격 못하는 상황 공유드립니다.

0

121

1

rider에서 new editor config 설정

0

173

1

Reward csv 파일이 없고 EquipmentChart는 열이름 문제로 업로드가 안됩니다.

1

155

2

강의 영상코드랑 강의 자료 코드가 다릅니다.

0

161

2

M1의 어드레서블 리소스 관리 방식에 대하여 질문있습니다.

0

137

1

M1의 리소스매니져 클리어 타이밍에 대해 여쭤보고싶습니다.

0

95

1

C1 일정은 어떻게 되는건가요?

0

220

3

게임 클라이언트 개발에서 테스트 코드 작성이 도움이 될까요?

0

186

1

Stateless서버에서의 유저인스턴스

0

177

2

섹션 4(SaveData, HeroList, ItemData, ItemHolder)에 일부 항목들에 대한 재생오류 해결 부탁드립니다.

0

168

1

첫 강의 manager 가 재생이 안됩니다.

0

303

5

T2는 어떻게된걸까요?

0

435

1

9주차 강의 'Stage 분할' 이 로딩만 뜨고 재생되지 않습니다

0

150

1

강의 완료 시기

0

306

1

다운 받은 맵 프리팹을 오픈해보니 핑크색으로 보이네요

0

568

3

typeof 와 GetType

0

228

1

섹션2 - Tilemap 강의에서 BaseMap 프리팹에 Front_01 용도가 궁금합니다.

0

153

1

패킷 형식 질문입니다.

0

149

1

어드레서블 Sprite 관련해서 질문이있습니다.

0

598

1

Data #2 까지 들었는데 빌드를 해보고싶은데, 어느 강의에서 확인할 수 있나요?

0

303

2