Unity之间的Unity暂停文本显示等待用户输入

时间:2014-11-26 11:33:55

标签: user-interface text unity3d

我有一个脚本,目前正在逐字显示对话文本。目前,它遍历我的_stanzas数组中的每个文本字符串而不会暂停。我想更改此脚本,以便用户按下" Z"在脚本开始打印_stanzas的下一个文本块之前,在键盘上。我似乎无法弄清楚......这是我的代码。

使用UnityEngine;    使用System.Collections;

public class Text : MonoBehaviour {


public float LetterPause = 0.1f;
public GameObject text;
public GameObject box;
public GameObject name;
    private bool _textFinished;
    private int _textIndex;
    private string[] _stanzas;
int tracker;

    public void Start()
    {
    if (Application.loadedLevel == 1) {
                    _stanzas = new [] {
                            " It’s Terrence’s hat... ",
                            "He always was one to lose track of the" + "\n" + "material objects in life," + "\n" + "but to hold onto the immaterial forever.",
                            "I’ll carry it for him" + "\n" + "until I find him. "
                    };
            }


        _textFinished = true;
        _textIndex = -1;
    tracker = _textIndex;
    }

public void Update()
{   

    if (_textFinished)
    {
        if (_textIndex++ >= (_stanzas.Length - 1))
        {
            _textFinished = false;
            text.SetActive(false);
            box.SetActive(false);
            name.SetActive(false);
        }

        if (_textFinished){
                SetText(_stanzas[_textIndex]);}
    }
}

    private IEnumerator TypeText(float waitTime, string text)
    {
        _textFinished = false;

        guiText.text = "";

        foreach (var letter in text)
        {
            guiText.text += letter;

            yield return new WaitForSeconds (waitTime);
        }

        _textFinished = true;
    }

    private void SetText(string text)
    {
        StartCoroutine(TypeText(LetterPause, text));
    }


}

1 个答案:

答案 0 :(得分:0)

变化

if (_textFinished)

if (_textFinished && (Input.GetKeyDown(KeyCode.Z) || _textIndex < 0))