(スクリプト)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TextController2 : MonoBehaviour
{
public string[] talks;
private string[] words;
public Text textLabel;
public AudioClip sound;
public GameObject talkButton;
private int talkNum = 0;
// ボタンを押すと会話スタート
public void OnTalkButtonClicked()
{
// 会話フィールドをリセットする。
textLabel.text = "";
StartCoroutine(Dialogue());
// トークボタンを非表示にする。
talkButton.SetActive(false);
}
// コルーチンを使って、1文字ごと表示する。
IEnumerator Dialogue()
{
// 半角スペースで文字を分割する。
words = talks[talkNum].Split(' ');
foreach (var word in words)
{
// 0.1秒刻みで1文字ずつ表示する。
textLabel.text = textLabel.text + word;
AudioSource.PlayClipAtPoint(sound, Camera.main.transform.position);
yield return new WaitForSeconds(0.1f);
}
// 次のセリフがある場合には、トークボタンを表示する。
if(talkNum + 1 < talks.Length)
{
talkButton.SetActive(true);
}
// 次のセリフをセットする。
talkNum = talkNum + 1;
}
}
(設定ポイント)
- セリフは「半角スペース」を入れて設定する。
(実行結果)
- ボタンを押すと、複数のセリフが一行ずつ(かつ一文字ずつ)順番に表示されればOK
- 最後のセリフの場面では、「ボタン」は表示されない。