Записать строку в течение 10 секунд

Я пытаюсь придумать способ реализации самонаписывающегося текста, подобного тем, которые вы обычно видите в 2D-играх, но я оказался в небольшом обрыве, в другом слова, я думаю, я застрял

Что было бы хорошим поиском в Google в этом конкретном случае?

private IEnumerator Narrative(string line, float seconds)
{
    transform.GetChild(narratorPanel).GetComponent<CanvasGroup>().alpha = 1f; /* Begin narrative */

        for (int i = 0; i < 10000; i++)
        {
            while (seconds >= 0)
            {
                seconds -= Time.smoothDeltaTime;

            // ( seconds / line.Length ) = distance between each character in a timeframe

            // By the end the entire line must be displayed and chances are it's going to disappear immediately after the last character so I'll also have to implement some kind of padding so that the user is able to read it

            yield return null;
            }
        }

    transform.GetChild(narratorPanel).GetComponent<CanvasGroup>().alpha = 0f; /* End narrative */
}

Вместо фиксированного времени для отображения всего текста, что означает переменное время для каждого символа, почему бы не установить фиксированное время для каждого символа, то есть переменное время для всего текста в зависимости от количества символов? Последнее будет казаться более естественным (imho) => больше текста, больше времени отображения.

Corak 10.09.2018 08:30
0
1
97
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть ли причина, по которой вы так реализуете свою идею? Рассмотрите следующий метод и посмотрите, подходит ли он тому, чего вы пытаетесь достичь.

IEnumerator WriteText(string Text,float interval)
{
    string dummyText = "";
    foreach(char s in Text)
    {
        dummyText += s;
        //write to the text object
        _TextObject.text = dummyText;
        yield return new WaitForSeconds(interval);

    }

Другие вопросы по теме