Exemple #1
0
    private async UniTask TextFeedAsync()
    {
        //文字送りで表示
        text.text = "";
        var strpool  = new string[MAX_ROWS];
        int loadendJ = 0;

        for (int j = 0; j < MAX_ROWS && !skipFeeding; j++)
        {
            if (cnt + j >= textAsset.SplitedText.Length)
            {
                break;
            }

            strpool[j] = textAsset.ReadLine(j + cnt);
            loadendJ++;

            for (int i = 0; i < strpool[j].Length && !skipFeeding; i++)
            {
                await UniTask.Delay(FEED_DELAY);

                text.text += strpool[j][i];
            }
            text.text += '\n';
            await UniTask.Delay(FEED_RAW_DELAY);
        }

        //全文を表示
        text.text = "";
        for (int j = 0; j < MAX_ROWS; j++)
        {
            if (cnt + j >= textAsset.SplitedText.Length)
            {
                break;
            }

            if (j < loadendJ)
            {
                text.text += strpool[j] + '\n';
            }

            else
            {
                text.text += textAsset.ReadLine(cnt + j) + '\n';
            }
        }

        skipFeeding = false;
        nowFeeding  = false;
        cnt        += MAX_ROWS;
        logWindow.SetLogText(text.text); //ログに流す
        feedEndMark.SetActive(true);
        onFeedEnd.OnNext(Unit.Default);

        if (cnt >= textAsset.SplitedText.Length)
        {
            onAssetEnd.OnNext(Unit.Default);
        }
    }