• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

SkeletonAnimation / Controller - Manager

23.07.01 18:48 작성 23.07.02 21:33 수정 조회수 205

0

[질문 List]
#1 (Q1, Q2, Q3) , #2
총 4개 입니다.



#1 SkeletonAnimation 제어

BossController.cs에서 SkeletonAnimation 파일이 재생되는 부분에서 좀 더 알고 싶은 점이 생겨서 질문드립니다.

[질문]
시작 끝 지점에 대한 처리 -> 관련 질문 Q1,2,3

구현하고 싶은 것
특정 애니메이션이 끝나고 나서 어떤 팝업을 띄우고 싶은데, 트랜지션 느낌으로 SpineAnimation을 재생시키고 싶은데, 시작/끝 지점에 대한 처리를 어떻게 할지 알고 싶습니다.

[[TestPopup 프리펩]]
-Transition (SpineAnimation 컴포넌트 존재)
- Viewport
   - UI 버튼, 텍스트 요소들 존재

[[TransitionController.cs]]

SkeletonAnimation _spineAni;
SkeletonDataAsset ani;
bool b;

void Init()
ani =  Resources.Load<SkeletonDataAsset>(string path);
StartCoroutine(CoStart());

IEnumerator CoStart()
_spineAni.skeletonDataAsset = ani;
_spineAni.loop = false;
_spineAni.Initialize(true);
yield return new WaitUntil( () => b == true)

[[TestPopup.cs]]

[SerializeField] TransitionController tc;
[SerializeField] GameObject viewport;

//실행시킬 SpineAnimation 오브젝트 "Transition" 연결시키기
[SerializeField] GameObject go;

void Awake()
viewport.SetActive(false);
tc = go.GetComponentInChildren<TransitionController>();
tc.Init();

=> 이후, Q1이 해결될경우 viewport.SetActive(true) 작성 시점 확인 가능.
 

 

Q1.Animation이 끝났을 때, viewport.SetActive(true)로 바꿔주려고 할 때, 어떻게 코드를 작성하면 좋을지 고민입니다.

Transition이 재생 완료되었다는 event를 Popup에게 넘겨주는 방식을 생각하고 있는데 방향성이 맞나요?

Q2. spineAni.loop = false 로 설정해도,
애니메이션 타임만 증가하여 영원히 돌아가는 걸로 나온다고 알고 있는데,

TransitionController에서 애니메이션을 1회만 실행하도록 코루틴으로 1회만 실행하고, 2회부터는 실행되지 않도록 WaitUntil로 멈추는게 옳은 로직일까요?

SetAnimation은 SkeletonGraphic만 가능하다고 해서, 스파인 애니메이션을 1회만 실행시키는 방식이, spine 프레임워크 상에 구현되어있는데 제가 못찾는건지.. ( 제가 찾을땐 못 찾았습니다 )
아니면, 없다고 가정하고 코드상으로 구현할 때, 저렇게 구현하는게 맞을지 궁금합니다.

Q3. TestPopup 프리펩처럼, 어떤 팝업이 실행되기 전 spine 트랜지션 효과를 주고 싶을 때,
TesoPopup 산하의 자식 오브젝트인, Transition / Viewport 오브젝트로 분리해서, Transition이 실행 중일때는 Viewport를 SetActive(false), 실행 완료되었을때 ViewPort.SetActive(true)를 해주는 방식으로 코드를 작성하는게 괜찮은 방법일까요?

 



#2 Controller Manager ?

Controller는 M V C 패턴 중, V에 해당하는 부분을 전부 포함하고 있는 코드라고 보면 될까요?
제가 생각한 관련 MVC 패턴은 이렇습니다만, 제가 이해한게 맞는지 궁금합니다.

View : Controller Code,

Model: GameScene처럼 Scene코드 / GameManager / UI_ ..

구조적으로 GameManager가 로직을 전부 담고 있는게 맞지만, 편의성/가독성을 위해 Scene코드나 로직이 필요한 UI코드에 함께 적는 것도 가능하다.

Control : (ex : UI_GameScene) UI Code

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.07.03

안녕하세요, 인프런 AI 인턴이에요. SkeletonAnimation을 제어하는 BossController.cs에서 재생되는 부분에 대해 궁금한 사항이 있는 것 같네요.

시작과 끝 지점에 대한 처리를 구현하고 싶고, 특정 애니메이션이 끝나면 팝업을 띄우고 싶다고 하셨는데요. SpineAnimation을 트랜지션 처럼 재생하기 위해 어떻게 처리해야 할지 알고 싶으시군요.

TransitionController.cs 파일과 TestPopup.cs 파일 내용을 살펴보니, SpineAnimation과 관련된 초기화 및 제어 부분이 작성되어 있는 것 같아요. TransitionController.cs 파일에서는 _spineAni 변수를 초기화하고, TestPopup.cs에서는 SpineAnimation을 실행시킬 오브젝트를 연결하고 초기화를 진행하고 있네요.

이후에 어떤 내용을 구현하려고 하시는지에 대한 부분이 이어지는데, 이 내용을 알려주시면 더 구체적으로 도움을 드릴 수 있을 것 같아요. Q1이 해결되려면 어떤 내용을 추가로 구현해야 하는지 자세히 알려주시면 도움이 될 거예요. 감사합니다.