# 글자를 동적으로 표시하고 숨기기

<mark style="color:기본값;background-color:yellow;">**타자기를 사용하여 글자를 동적으로 표시하고 숨길 수 있습니다**</mark><mark style="color:기본값;background-color:yellow;">,</mark> 문자 종류(구두점, 글자, \[…] 등)에 따라 서로 다른 일시 정지를 선택하고, 이벤트를 트리거하는 등 다양한 작업을 할 수 있습니다.

***

## 텍스트 표시 <a href="#showing-text" id="showing-text"></a>

The 타자기에는 일반 설정과 이벤트 리스너가 포함되어 있으며, 다양한 일시 정지/타이밍 모드를 사용할 수 있습니다:

* **문자 단위**: 글자를 하나씩 차례로 표시합니다.
* **단어 단위**: 텍스트를 단어별로 진행합니다.

{% hint style="success" %}
이 새로운 아키텍처(3.0부터)는 이벤트 참조와 설정을 그대로 유지하면서 개발 중에(어떤 이유로든) 타자기 타이밍을 변경할 수 있게 해줍니다! <3
{% endhint %}

**타자기는 다음과 같이 보여야 합니다:**

{% tabs %}
{% tab title="텍스트 메쉬 프로" %}
인스펙터의 TypewriterComponent에서:

<figure><img src="/files/ce75644b7dbb2976795578f5b8cc31637efbdb7f" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="UI 툴킷" %}
UI Builder의 AnimatedLabel에서:

<figure><img src="/files/c087d5db6246a625959facdce10a26fff715efce" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
타이밍 스크립터블 오브젝트를 반드시 할당하세요. 그렇지 않으면 타자기가 전체 텍스트를 즉시 표시합니다!
{% endhint %}

***

타자기를 시작하는 방법은 크게 두 가지입니다:

### A) 코드로 (권장) <a href="#a-via-code-recommended" id="a-via-code-recommended"></a>

타자기를 사용하려면, **코드를 통해 해당 컴포넌트에 텍스트를 직접 설정하는 것이 권장됩니다.**

{% tabs %}
{% tab title="텍스트 메쉬 프로" %}
TextMeshPro를 사용 중이라면, TMPro 또는 Text Animator를 참조하는 스크립트([텍스트 설정하기](/text-animator-unity/3.x-ko/effects/setting-up-texts.md))를 교체하고 `Febucci.TextAnimatorForUnity.TypewriterComponent`  를 참조하세요.

* :x: 하지 마세요: “`tmproText.text = textValue;`” , 또는 "`textAnimator.SetText(textValue);`"&#x20;
* :white\_check\_mark: 하세요:  `typewriter.ShowText(textValue);`
  {% endtab %}

{% tab title="UI 툴킷" %}
UI 툴킷에서는, `AnimatedLabel` 에 이미 상호작용할 수 있는 "`Typewriter`" 값이 있습니다!\
타이밍을 할당해 두기만 하면, 그 외에는 아무것도 할 필요가 없습니다.
{% endtab %}
{% endtabs %}

### B) 자동 인식 <a href="#b-via-the-easy-integration" id="b-via-the-easy-integration"></a>

위 단계를 따르지 않았더라도, TypeAnimator는 Typewriter 컴포넌트를 추가했거나 UI 툴킷의 AnimatedLabel을 통해 "Timings"를 설정한 경우 타자기를 자동으로 시작하려고 시도합니다.&#x20;

{% hint style="warning" %}
Easy Integration은 한 프레임 늦게 발생할 수 있습니다(먼저 무언가가 변경되었다는 것을 감지해야 하며, 보통 그 변경은 이전 프레임에 이루어졌고, 그다음 타자기를 시작하기 때문입니다). 이것이 문제라면, 단계를 따르거나 [글자를 동적으로 표시하고 숨기기](/text-animator-unity/3.x-ko/typewriter/show-and-hide-letters-dynamically.md#a-via-code-recommended)를 보세요 [문제 해결](/text-animator-unity/3.x-ko/other/troubleshooting.md#when-i-set-the-text-i-see-the-previous-one-for-one-frame-before-showing-the-new-one)
{% endhint %}

***

## 글자 제어

### 타이핑 시작 및 중지 <a href="#start-and-stop-typing" id="start-and-stop-typing"></a>

컴포넌트의 인스펙터 안에서 타자기 시작이 어떻게 트리거될지 제어하는 몇 가지 옵션을 찾을 수 있습니다:

* `타자기 모드 시작`: 타자기가 언제 글자 표시를 시작할지 알려줍니다.

<table><thead><tr><th width="300">값</th><th>설명</th></tr></thead><tbody><tr><td><strong>스크립트에서만</strong></td><td>타자기는 다음을 호출해야만 시작할 수 있습니다 <a href="https://www.api.febucci.com/tools/text-animator-unity/api/Febucci.UI.Core.TypewriterCore.html#Febucci_UI_Core_TypewriterCore_ShowText_System_String_">TextAnimatorPlayer.StartShowingText()</a></td></tr><tr><td><strong>OnEnable</strong></td><td>게임 오브젝트가 활성화될 때마다 타자기가 시작됩니다</td></tr><tr><td><strong>OnShowText</strong></td><td>새 텍스트가 설정되는 즉시 타자기가 시작됩니다(<a href="#showing-text">“텍스트 표시” 섹션에서 설명한 대로</a>)</td></tr><tr><td><strong>모든 이벤트에서 자동으로</strong></td><td>위의 모든 항목</td></tr></tbody></table>

* `시작 시 타이핑 속도 재설정`: 새 텍스트가 표시될 때마다 타자기의 속도를 1로 다시 재설정하려면 true로 설정하세요. 그렇지 않으면 마지막으로 사용한 값을 저장합니다.

{% hint style="success" %}
다음을 호출하여 언제든지 타자기를 일시 중지할 수 있습니다 `typewriter.StopShowingText()`, 그리고 다음을 호출하여 시작/재개할 수 있습니다 `typewriter.StartShowingText()`.
{% endhint %}

### 전체 텍스트 건너뛰기 <a href="#skip" id="skip"></a>

전체 타자기 과정을 건너뛰려면 다음을 호출할 수 있습니다 `typewriter.SkipTypewriter()` 메서드.

동작을 제어하는 몇 가지 옵션도 찾을 수 있습니다:

* `건너뛸 때 등장 효과 숨기기`: 타자기가 건너뛰어질 때마다 등장 효과가 재생되지 않도록 하려면 true로 설정하세요(즉, 텍스트가 즉시 표시됩니다).
* `건너뛸 때 이벤트 트리거`: 타자기가 건너뛰어진 후 남은 모든 이벤트를 트리거하려면 true로 설정하세요(이벤트로 게임 로직을 실행 중이라면 주의하세요. 모든 것이 한꺼번에 실행됩니다). 이벤트에 대해 더 읽어보세요: [입력 중 이벤트 트리거하기](/text-animator-unity/3.x-ko/typewriter/trigger-events-when-typing.md)

### 텍스트의 특정 부분 건너뛰기

{% hint style="warning" %}
이 기능은 3.0에서 테스트 중이며, 다음 버전에서 매우 곧 복원될 예정입니다! 양해해 주셔서 감사합니다!
{% endhint %}

### 텍스트 숨기기 <a href="#hiding-text" id="hiding-text"></a>

스크립트를 통해 글자를 동적으로 숨기려면 다음을 호출하세요 `typewriter.StartDisappearingText()`, 그리고 다음을 호출하여 언제든지 중지할 수도 있습니다 `typewriter.StopDisappearingText()`.

***

{% hint style="info" %}
자신만의 타이밍 대기 시간을 만들 수 있습니다( [여기 ](/text-animator-unity/3.x-ko/writing-custom-classes/c-1.md)에서 C#으로 만드는 방법을 읽거나, 내장된 대기 시간을 사용할 수도 있습니다.
{% endhint %}

## 옵션 <a href="#options" id="options"></a>

타자기는 동일한 설정을 공유할 수도 있고 특정 설정도 가질 수 있으므로, 인스펙터에서 각 필드 위에 마우스 커서를 올려 각 항목의 툴팁이 표시되도록 하세요.

가장 중요하고 일반적인 항목들을 간단히 살펴보겠습니다:

### 콜백(Unity 이벤트) <a href="#callbacks-unity-events" id="callbacks-unity-events"></a>

타자기 동작에 따라 트리거되는 Unity 이벤트를 사용할 수 있습니다(예: 텍스트 표시가 막 끝났을 때).

<figure><img src="/files/6eaefeae41b85173987c19e2b5888f1e7c4c7913" alt=""><figcaption></figcaption></figure>

<table><thead><tr><th width="288">이벤트</th><th>설명</th></tr></thead><tbody><tr><td><code>OnTextShowed</code></td><td>전체 텍스트가 표시된 후 호출되는 이벤트(<em>“Use Typewriter”를 true로 설정한 경우, 모든 글자가 표시될 때까지 대기합니다</em>)</td></tr><tr><td><code>OnTextDisappeared</code></td><td>스크립트가 마지막 글자를 숨기기 시작하자마자 호출됩니다</td></tr></tbody></table>

아래 항목들은 “**use typewriter**”가 **true**:

<table><thead><tr><th width="288">이벤트</th><th>설명</th></tr></thead><tbody><tr><td><code>OnTypewriterStart</code></td><td>타자기가 첫 글자 표시를 시작하기 직전에 호출됩니다.<br>타자기가 꺼져 있으면 “OnTextShowed” 이벤트와 동일해지므로 작동하지 않습니다 <em>(이 경우 그 이벤트를 대신 사용할 수 있습니다)</em></td></tr><tr><td><code>OnCharacterVisible(Char)</code></td><td>문자가 보이게 될 때마다 호출됩니다</td></tr><tr><td><code>OnMessage(EventMarker)</code></td><td>타자기가 텍스트에서 메시지/이벤트를 만날 때마다 호출됩니다. 이벤트에 대해 더 읽어보세요 <a href="/pages/62c42e116613b44ade473b34c0da6874cfbce04a">여기</a></td></tr></tbody></table>

{% hint style="info" %}
타자기는 연결된 Text Animator의 **Time Scale** 을 사용하여 시간을 진행합니다(여기에서 더 읽을 수 있습니다: [애니메이터 설정](/text-animator-unity/3.x-ko/effects/how-to-add-effects/animator-settings.md#time-scale)), 즉 시간이 "Unscaled"로 설정되어 있으면 게임이 일시 중지되어도 타자기는 계속 진행됩니다.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.febucci.com/text-animator-unity/3.x-ko/typewriter/show-and-hide-letters-dynamically.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
