> For the complete documentation index, see [llms.txt](https://docs.febucci.com/text-animator-unity/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.febucci.com/text-animator-unity/2.x-ko/undefined-2/text-animator.md).

# Text Animator 수동 통합 방법

***쉿. 여기에서 당신의 대화 시스템이 이미 통합되어 있는지 확인하세요:*** [통합 플러그인 및 대화 시스템](/text-animator-unity/2.x-ko/undefined-2/undefined.md).

모든 대화 시스템은 다르지만 한 가지는 같습니다: **텍스트 설정**.\
\&#xNAN;*이론적으로* 당신은 단순히 “ 를 교체하여 플러그인을 통합할 수 있습니다`tmpro.text=dialogue;`” 를 “`typewriter.ShowText(dialogue);`” 로, 하지만 여기에 다양한 경우를 다룬 더 확장된 안내가 있습니다.

주의하세요 **강력히 권장됩니다** 플러그인의 타이프라이터(사용할 계획이라면)를 비활성화하고 **TextAnimator의** 것을 사용하세요 (그래야 모든 기능을 사용할 수 있습니다).

{% hint style="danger" %}
자체 포매팅을 가진 대화 시스템은 이 절차를 더 복잡하게 만들 수 있습니다. 자세한 정보는 다음 다이어그램을 읽어보세요.
{% endhint %}

![](/files/4c6d3df48310a05a35b833dd9649ad959a3bea71)

**더 설명이 필요하거나 도움이 필요하면 주저하지 말고 저희에게 연락하세요.**

***

여기 서면 가이드도 있습니다.

### 당신의 대화 시스템/플러그인이… <a href="#if-your-dialogue-system--plugin" id="if-your-dialogue-system--plugin"></a>

### … ⚠️ 텍스트를 동적으로 표시한다 (타이프라이터가 있다) <a href="#shows-text-dynamically-has-a-typewriter" id="shows-text-dynamically-has-a-typewriter"></a>

✔️ 플러그인의 타이프라이터를 TextAnimator의 것으로 교체하세요.

❌ 대화 시스템의 타이프라이터를 교체할 수 없다면, 값 “`간편 통합 사용`” 를 false(TextAnimator 컴포넌트)로 설정하고 애니메이션이 제대로 작동하는지 확인해 보세요(수많은 대화 시스템에 따라 성공이 보장되지는 않습니다).\
**하지만 이 옵션은 권장되지 않습니다. 성능이 크게 달라질 수 있으니 내장된 타이프라이터를 사용하세요.**

#### 자주 묻는 질문

<details>

<summary><strong>왜 내장 타이프라이터를 사용해야 하나요?</strong></summary>

플러그인의 의도된 호환성을 보장하는 것 이상으로, 성능상의 이유로 내장 타이프라이터(TextAnimatorPlayer)를 사용해야 합니다.

* TextMeshPro 텍스트를 변경할 때마다 포매팅을 계산하고 메쉬(법선, 탄젠트, UV 등)를 업데이트해야 합니다. 이제 타이프라이터로 글자를 추가할 때마다 이 계산을 한다고 상상해 보세요… :/ (Text Animator를 사용하든 안 하든 상관없이)<br>
* 이 때문에 TMPro는 “maxVisibleCharacters” 변수를 추가했습니다; 전체 텍스트를 한 번 설정한 다음 보이는 글자 수를 시간에 따라 증가시키면 됩니다. Text Animator를 사용하면 `tmproText.maxVisibleCharacters++`를 호출하는 대신`textAnimator.maxVisibleCharacters`” 를 단순히 호출할 수 있으며, 유사하게 작동하면서 모든 이펙트도 관리합니다.

</details>

<details>

<summary><strong>내 타이프라이터는 텍스트를 한 번 설정하고 보이는 글자 수만 증가시키는데, 사용해도 되나요?</strong></summary>

가능하지만 “`tmpro.maxVisibleCharacters++`” 부분을 수정하여 `textAnimator.maxVisibleCharacters++`로 교체해야 합니다. 또한 TextAnimatorPlayer가 처리하는 TextAnimator의 이벤트와 기능들을 구현해야 하며, 구현이 없으면 작동하지 않습니다.

</details>

### … 커스텀 액션을 가지고 있다 <a href="#has-custom-actions" id="has-custom-actions"></a>

“커스텀 액션”은 텍스트를 표시하는 동안 수행되는 동작(예: 플레이어 입력을 기다리는 것 등)을 의미합니다.

* ✔️ 만약 당신이 `TextAnimatorPlayer`을 사용하고 있다면:\
  여기서 커스텀 액션을 구현하는 방법을 읽어보세요: [사용자 정의 액션 작성 (C#)](/text-animator-unity/2.x-ko/c/c-1.md)
* ❌ 만약 당신이 `TextAnimatorPlayer`를 사용할 수 없다면:\
  대화 시스템의 타이프라이터에 이미 커스텀 액션이 존재하므로 어떤 커스텀 액션도 구현할 필요가 없습니다. 그러나 외부 타이프라이터 사용은 권장되지 않으며 프로젝트 성능에 영향을 줄 수 있습니다.

### … 자체 태그/포매팅을 가지고 있다 <a href="#has-its-own-tagsformatting" id="has-its-own-tagsformatting"></a>

#### ✔️ 이름/관리용 태그 <a href="#tags-for-namesmanagement" id="tags-for-namesmanagement"></a>

이 태그들은 대화 시스템이 텍스트 문자열을 구성하는 데 사용되어야 합니다. 이들은 문제를 일으키지 않으므로(여는/닫는 문자 포함) 교체하거나 수정할 필요가 없습니다. 가상의 “이름/관리” 태그 예시:

* `{actor1}` → 말하고 있는 첫 번째 캐릭터의 이름을 텍스트에 씁니다.
* `|getValue("eatenApple")|` → 텍스트에 변수를 씁니다
* 텍스트 예시

`"{actor1}, why did you eat |getValue("eatenApple")| apples?! Omg"` → “Karen, why did you eat 1234567 apples?! Omg” → 보시다시피 최종 텍스트에는 태그가 표시되지 않습니다. 이 경우는 Text Animator에서 별도 구현 없이 작동합니다.

#### ⚠️ 텍스트 스타일용 태그 <a href="#tags-for-text-styles" id="tags-for-text-styles"></a>

대화 시스템에 `<bold>` 와 같은 스타일 텍스트 태그가 있다면, 대화 시스템의 태그가 Text Animator와 Text Mesh Pro의 태그와 일치하는지 확인하세요 (이전 예시에서는 `<bold>` 를 `<b>`).

#### 로 교체하세요) <a href="#tags-for-custom-functionalities" id="tags-for-custom-functionalities"></a>

⚠️ 커스텀 기능용 태그 [사용자 정의 액션 작성 (C#)](/text-animator-unity/2.x-ko/c/c-1.md)

대화 시스템에 (예: “오디오 재생”과 같은) 어떤 동작을 수행하는 태그가 있다면, 여기를 확인하세요: [타이핑 시 대기 액션](/text-animator-unity/2.x-ko/typewriter/undefined-3.md)
