본문 바로가기

내일배움캠프/[P4-Solo.] PartyRoom

[TIL 24.05.13] Unity 개인프로젝트 입문(2)

글의 요약 설명 부분.

 

목   차

     


    Animation Override Controller

    마음이 급해서 일단 GPT로 배운 내용 스크랩해서 올린다. 나중에 개인과제 제출 완료하고 추가 자료와 함께 수정... 할 수도 있고 아닐수도 있고.

     

    AnimatorOverrideController 사용하기

    1. AnimatorOverrideController 생성하기
      • Unity 에디터에서 Project 탭을 열고, Create > Animator Override Controller를 선택합니다.
      • 생성된 Override Controller에 이름을 지정하고 (예: PlayerAnimationsOverride), 플레이어의 원본 Animator Controller를 드래그하여 Controller 슬롯에 할당합니다.
    2. 애니메이션 클립 교체
      • Override Controller를 더블 클릭하여 열고, 교체하고 싶은 기존의 애니메이션 클립 옆에 새 클립을 드래그합니다.
      • 예를 들어, 'Walk' 애니메이션을 새로운 'Walk_New' 클립으로 교체하려면, 'Walk' 항목 옆에 'Walk_New' 클립을 드래그합니다.
    3. 스크립트 작성
      • 게임 오브젝트에 스크립트를 추가하여 애니메이터 컨트롤러를 변경합니다. 예를 들어, 스크립트를 통해 다양한 상황에 맞는 애니메이션을 적용할 수 있습니다.
    using UnityEngine;
    
    public class AnimationSwapper : MonoBehaviour
    {
        public Animator animator; // Animator 컴포넌트
        public AnimatorOverrideController animatorOverrideController; // 사용자 지정 Override Controller
    
        void Start()
        {
            // Animator의 런타임 컨트롤러를 Override Controller로 변경
            animator.runtimeAnimatorController = animatorOverrideController;
        }
    
        // 예시: 특정 상황에서 애니메이션 변경
        public void ChangeAnimationClip(AnimationClip newClip, string clipNameToReplace)
        {
            animatorOverrideController[clipNameToReplace] = newClip;
            animator.runtimeAnimatorController = animatorOverrideController;
        }
    }

     

    사용 시 주의사항

    • 애니메이션 교체의 동적 반영: AnimatorOverrideController를 사용하면 실행 중에 애니메이션 클립을 교체할 수 있으며, 이 변경사항은 즉시 반영됩니다.
    • 캐싱: AnimatorOverrideController 인스턴스를 캐싱해두고 필요할 때마다 수정하여 사용할 수 있습니다. 이는 메모리 사용과 성능 최적화에 도움을 줍니다.

    이 접근 방법을 사용하면 플레이어에 연결된 애니메이터의 애니메이션 클립을 유연하게 변경할 수 있으며, 게임 내 다양한 상황에 맞게 캐릭터의 행동을 다르게 표현할 수 있습니다.

     

    TextMeshPro

    1. TextMesh Pro 컴포넌트 추가

    Unity에서 TMP 컴포넌트 추가하기:

    1. Unity 에디터 열기와 프로젝트 선택.
    2. Hierarchy 뷰에서 UI 요소를 추가하려는 Canvas를 선택하거나 새 Canvas를 생성합니다.
    3. GameObject > UI > Text - TextMeshPro를 선택하여 새 TMP 텍스트 오브젝트를 생성합니다.

    2. 폰트 에셋 설정

    TMP는 기본 폰트 에셋을 사용합니다만, 다른 스타일이나 폰트가 필요할 경우 변경할 수 있습니다:

    1. Font Asset 생성: Window > TextMeshPro > Font Asset Creator를 열어, 원하는 TTF 또는 OTF 폰트 파일을 사용하여 새 폰트 에셋을 생성합니다.
    2. 생성된 폰트 에셋을 TMP 텍스트 오브젝트의 Font Asset 속성에 드래그하여 할당합니다.

    3. 텍스트 스타일링

    TMP는 다양한 스타일링 옵션을 제공합니다:

    • 텍스트 속성 조정: Inspector에서 텍스트 컴포넌트를 선택하고, Text 필드에 표시할 문자열을 입력합니다. 폰트 크기, 색상, 정렬 등을 조정할 수 있습니다.
    • 효과 추가: 그림자, 아웃라인, 그라디언트 등 다양한 효과를 적용할 수 있습니다. 이는 Extra Settings에서 설정할 수 있습니다.

    4. 텍스트 레이아웃 조절

    TMP는 텍스트 레이아웃을 세밀하게 조정할 수 있는 옵션을 제공합니다:

    • Wrapping: 텍스트가 특정 너비를 초과할 때 자동으로 줄바꿈할지 여부를 설정할 수 있습니다.
    • Auto-size: 텍스트 박스 크기에 맞추어 폰트 크기가 자동으로 조정되도록 설정할 수 있습니다.

    5. 인터랙티브 텍스트 만들기

    TMP를 사용하여 링크, 서브스크립트, 슈퍼스크립트 등 인터랙티브 텍스트를 만들 수 있습니다:

    1. Rich Text 사용: TMP의 리치 텍스트 기능을 사용하여 텍스트에 태그를 추가하고, 특정 단어나 구절에 다양한 스타일을 적용합니다.
    2. 링크 추가: <link="id">Click here!</link>와 같은 태그를 사용하여 인터랙티브 링크를 만듭니다. 링크에 대한 클릭 이벤트를 처리하기 위해 TMP 컴포넌트에 스크립트를 추가합니다.

    6. 스크립트를 통한 텍스트 제어

    TMP 텍스트는 스크립트를 통해서도 제어할 수 있습니다. 예를 들어, 플레이어의 점수나 상태 메시지를 동적으로 업데이트할 수 있습니다

    using TMPro; // TMP 네임스페이스 추가
    
    public class ScoreManager : MonoBehaviour
    {
        public TextMeshProUGUI scoreText; // Inspector에서 할당
    
        public void UpdateScore(int newScore)
        {
            scoreText.text = "Score: " + newScore.ToString();
        }
    }

     

    이 가이드는 TMP의 기본 사용법을 다루며, 보다 고급 기능은 Unity의 공식 문서나 TMP 문서에서 더욱 자세히 학습할 수 있습니다. TMP를 사용하면 게임 UI의 질을 크게 향상시킬 수 있습니다.

     

     

    2d에서 유사 3차원 만드는 법

     


     

    마무리

    마무리