본문 바로가기

무제_LR

ChatCard(가제) 추가, Runtime Pivot 수정 주의점

 

왼쪽, 가운데, 오른쪽에서 짤막하게 등장했다가 사라지는 UI를 만들었습니다.

이름은 어케 할까 고민하다가 ChatCard로 지었습니다. 괜찮지 않나요?

괜찮지 않더라도 상관없습니다.

 

에너지가 고갈됐을 때 캐릭터 대사 연출이나, 피격 시 캐릭터 대사 연출 등으로 활용하기 좋을 것 같습니다.

 

이놈은 등장했다가, 대기한 후, 사라지는게 끝이라 구조 미리 짜는게 크게 중요하진 않았던 것 같습니다.

      existPresenter.SetData(data);

      switch (existPresenter.GetVisibleState())
      {
        case UIVisibleState.Showing:
          {
            existPresenter.UpdateViewAsync().Forget();            
          }//등장하던 도중: 내용물(초상화, 글)만 업데이트
          break;

        case UIVisibleState.Showen:
          {
            existPresenter.UpdateViewAsync().Forget();
            existPresenter.RefreshDuration();
          }//등장 완료하고 대기하던 도중: 내용물 교체하고 딜레이 시간 초기화
          break;

        case UIVisibleState.Hiding:
          {
            await existPresenter.UpdateViewAsync();
            existPresenter.ActivateAsync().Forget();
          }//사라지던 도중: 내용물 교체하고 재등장
          break;

        case UIVisibleState.Hidden:
          {
            await existPresenter.UpdateViewAsync();
            existPresenter.MoveToHiddenPositionImmedieately();
            existPresenter.ActivateAsync().Forget();
          }//완전히 사라진 도중: 내용물 교체하고 재등장
          break;
      }

각 방향별로 UI가 하나뿐이라 새로운 데이터를 받을 때 어떻게 행동할지 구상해놓는 정도?

 

내용물이 업데이트되더라도 화면에서 고정된 것처럼 보여야 했기 때문에 Pivot을 0.5, 0.5가 아니라 등장 방향에 맞춰 잡아줬습니다.

Root에는 LayoutGroup, SizeFitter

Root 하위 배경 이미지는 LayoutGroup에 영향을 받지 않도록 LayoutElement 추가 및 레이아웃을 무시하도록 설정

Stretch로 Root 크기를 100% 따라가게 했습니다.

 

초상화 Image는 별 특징이 없었습니다.

텍스트 TMP에도 SizeFitter를 달아 텍스트에 따라 Root의 크기-배경의 크기도 따라가게 했습니다.

LayoutGroup의 영향을 받아 Pivot도 자동으로 설정됐죠.

 

위 영상 후반부 오른쪽에서 챗 카드가 등장했을 때 RightTest2 신호를 보내면 새로운 챗 카드가 등장하지 않고 이미 있는 카드의 내용물 텍스트만 변경되는데, 우상단 고정이기 대문에 크기 변경에 크게 위화감이 들지 않는 모습을 확인할 수 있습니다.

 

그리고 이번 작업을 하면서 알아낸 놀라운 사실이 있는데,

보통 Inspector에서 오브젝트의 Pivot을 수정하더라도 Position이 바뀌되 Scene에서 그려지는 오브젝트의 위치는 바뀌지 않잖아요?

 

그런데 Play Mode에서 Pivot을 수정하면 Eidtor 모드와 다르게 WorldPosition이 고정됩니다.

다시말해, 오브젝트의 위치가 자동으로 '이동'하는 것처럼 보이게 됩니다.

저는 이 놀라운 사실을 20분을 끙끙대다 챗 GPT에게 물어본 후에야 깨달았습니다.

테챠아아아

 

다음에 할거:

튜토리얼 만들어보기

정보 윈도우만 보여주는 튜토리얼보단 '이거 해보세요' '저거 해보세요' 좀 더 Interactable한 튜토리얼을 만들어 보고 싶습니다.

 

'무제_LR' 카테고리의 다른 글

Signal Trigger, AutoMover 추가  (0) 2026.01.08
InputProgress(연타), InputQTE 추가  (0) 2026.01.06
Effect Prefab 생성 - Pooling  (0) 2026.01.02
씬 언로드, 로딩 UI 추가  (0) 2025.12.31
다이어로그 - Talking, Selection 구현  (0) 2025.12.29