고급 개념
백그라운드에서 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 구현은 과거 수년간 해왔던 것처럼) 버전 간에 최대한 하위 호환성을 유지하려고 노력하겠습니다(적용 가능한 경우 업데이트 가이드도 포함). 그러나 계획되지 않은 수정은 본인 책임으로 진행하세요!
프로젝트 중간에 Unity 버전을 업그레이드하는 경우, 에셋을 제거하고 패키지 매니저에서 다시 다운로드하세요(백그라운드에서 해당 Unity 버전에 맞게 빌드된 패키지를 다운로드합니다!).
상태 비저장(Stateless) 대 참조(Referenced) 요소
효과, 액션, 재생 방식 및 커브 등 대부분의 Text Animator 요소는 두 가지 방식으로 구현됩니다. 하나는 Unity와 GameObject/ScriptableObject와 일반적으로 독립적이며, 다른 하나는 게임 상태/파일 및 클래스에 대한 참조를 유지합니다.
상태 비저장(Stateless)
더 나은 최적화(향후 Burst 준비도 되어 있음, 추후 결정 예정)
요소 간 레이스 조건 없음
일부 코드 래퍼가 필요하지만, 에셋의 커스텀 클래스를 통해 완화됩니다!
게임 상태에 따라 애니메이션/타이프라이터를 수정할 수 없습니다
참조(Referenced)
게임 상태에 접근하여 그에 따라 다르게 동작하게 만들 수 있습니다
올바르게 구현되지 않으면 레이스 조건이 발생할 수 있습니다(예: 동일한 액션을 동시에 접근하는 두 개의 타이프라이터가 타이머를 사용하거나 동작을 수행하는 경우)
Burst를 통한 최적화가 불가능합니다(그러나 대부분의 경우 내장 요소들이 무거운 부분을 담당하므로 영향은 거의 없을 것입니다)
또한 사용자에게 다음을 제공하는 방안을 검토 중입니다 직접(Direct) 요소, 즉 자체 구현을 모두 제거하고 사용자가 원하는 방식으로 훅을 연결할 수 있게 하는 방식(다른 도구들을 고려했을 때 사용자의 약 1%만 필요로 할 것으로 보이지만, 여전히 중요한 옵션이라고 생각합니다).
장점: 직접 하세요.
단점: 직접 하세요.
요소를 어떻게 커스터마이즈할지는 전적으로 사용자에게 달려 있습니다.
문자 수가 많은 등 성능이 중요한 상황에서는 상태 비저장 유형을 선택하세요