Я играю в игру «Единство», и я хотел бы показывать текст на панели буква за буквой (например, если кто-то печатал).
Я уже посмотрел несколько вещей (сопрограммы, IEnumerator ), но не выяснил, как это сделать.
Мой GO - это префаб, который я создаю. Я не создаю экземпляр в окне Scene, все экземпляры выполняются в коде. И это не класс MonoBehaviour.
Это префаб, который я создаю:
InteractionIntro = Instantiate(Resources.Load("Prefab/Play/Interaction") as GameObject);
InteractionIntro.transform.SetParent(canvasGameObject.transform, false);
InteractionIntro.transform.localPosition = new Vector3(0, 200, 0);
public void SetInteractionText(string text)
{
InteractionIntro.GetComponentInChildren<Text>().text = text;
}
Иерархия выглядит следующим образом:
Поэтому мне бы хотелось, чтобы компонент «Текст» имел буквенно-буквенный эффект.
Есть идеи, как решить эту проблему?
@ ОБНОВЛЕНИЕ Может быть, добавив сценарий в мой сборный? @ UPDATE: я прочитал текст, который отображается из файла.
@ EDIT: поэтому я создал скрипт. Вот мой код:
public class TypingEffect : MonoBehaviour
{
public GameObject GO;
public float delay = 0.1f;
public string fullText;
private string currentText = "";
// Use this for initialization
void Start () {
StartCoroutine(ShowText());
}
IEnumerator ShowText(){
for(int i = 0; i <= fullText.Length; i++){
currentText = fullText.Substring(0,i);
GO.GetComponent<Text>().text = currentText;
yield return new WaitForSeconds(delay);
}
}
}
Работает. Текст отображается буква за буквой. Но это текст, который я написал в инспекторе:
Как связать текст с методом setInteractionText ?
@ UPDATE: удалось чтобы сделать это, но он только записывает построчный первый текст, если я отображаю второй текст, он больше не работает. может быть сброс?