고급 개념

백그라운드에서 Text Animator는 많은 작업과 최적화를 수행하여 다음을 보장합니다:

  • 애니메이션 중 가비지 수집이 0입니다 (텍스트가 설정될 때는 여전히 약간 발생합니다. 이는 TMPro와 Text Animator 2.0도 동일하며, 현재 개선 작업 중입니다!)

  • 에셋이 다양한 Unity 버전, 시스템 및 플랫폼과 호환됩니다

  • 사용자에게 가능한 한 간단한 API가 제공됩니다 (불편은 저희가 감수합니다. 그것이 이 도구의 목적입니다!)

  • 널 참조와 같은 잘못된 설정이 있어도(인간적으로 가능한 범위 내에서) 동작합니다

즉, 커스텀 스크립트를 작성할 때 알아야 할 Text Animator for Unity의 몇 가지 핵심 개념이 있습니다:


코어 라이브러리

Text Animator는 두 개의 주요 네임스페이스로 나뉩니다:

  • "Febucci.TextAnimatorCore"는 우리의 코어 라이브러리, 패키지에 포함된 런타임 DLL이며 동작을 위해 필수적입니다.

  • "Febucci.TextAnimatorUnity"는 Unity 구현이며, Scriptable Object부터 MonoBehaviour 등 다양한 요소를 포함합니다.

다음 페이지/가이드에서 의도한 대로 스크립트를 설정하는 방법을 찾을 수 있지만, 상속하거나 수정하거나 다시 구현할 때는 주의하세요!

코어 라이브러리는 새로운 기능을 구현하거나 구조를 재구성하기 위해 계속 업데이트할 예정이며, 사람들이 C#에서 어떤 변형이나 사용 사례를 만들지(특히 의도하지 않은 경우)는 알기 어렵습니다 — 따라서 가이드를 따르세요! 가능한 한 내부로 표시하고(Unity 구현은 과거 수년간 해왔던 것처럼) 버전 간에 최대한 하위 호환성을 유지하려고 노력하겠습니다(적용 가능한 경우 업데이트 가이드도 포함). 그러나 계획되지 않은 수정은 본인 책임으로 진행하세요!

circle-exclamation

상태 비저장(Stateless) 대 참조(Referenced) 요소

효과, 액션, 재생 방식 및 커브 등 대부분의 Text Animator 요소는 두 가지 방식으로 구현됩니다. 하나는 Unity와 GameObject/ScriptableObject와 일반적으로 독립적이며, 다른 하나는 게임 상태/파일 및 클래스에 대한 참조를 유지합니다.

유형
장점
단점

상태 비저장(Stateless)

  • 더 나은 최적화(향후 Burst 준비도 되어 있음, 추후 결정 예정)

  • 요소 간 레이스 조건 없음

  • 일부 코드 래퍼가 필요하지만, 에셋의 커스텀 클래스를 통해 완화됩니다!

  • 게임 상태에 따라 애니메이션/타이프라이터를 수정할 수 없습니다

참조(Referenced)

  • 게임 상태에 접근하여 그에 따라 다르게 동작하게 만들 수 있습니다

  • 올바르게 구현되지 않으면 레이스 조건이 발생할 수 있습니다(예: 동일한 액션을 동시에 접근하는 두 개의 타이프라이터가 타이머를 사용하거나 동작을 수행하는 경우)

  • Burst를 통한 최적화가 불가능합니다(그러나 대부분의 경우 내장 요소들이 무거운 부분을 담당하므로 영향은 거의 없을 것입니다)

circle-info

또한 사용자에게 다음을 제공하는 방안을 검토 중입니다 직접(Direct) 요소, 즉 자체 구현을 모두 제거하고 사용자가 원하는 방식으로 훅을 연결할 수 있게 하는 방식(다른 도구들을 고려했을 때 사용자의 약 1%만 필요로 할 것으로 보이지만, 여전히 중요한 옵션이라고 생각합니다).

  • 장점: 직접 하세요.

  • 단점: 직접 하세요.

요소를 어떻게 커스터마이즈할지는 전적으로 사용자에게 달려 있습니다.

  • 문자 수가 많은 등 성능이 중요한 상황에서는 상태 비저장 유형을 선택하세요