Unity中字幕的一个简单实现方式小结

  众所周知,字幕在电影的放映中十分的重要,特别是像我这样的英语很差的来说,看英文电影,如果没有字幕的话是一件十分痛苦的事情,话不多说,现在进入主题,如何在Unity中实现一个简单的字幕轮播的效果呢。

  以下便是一个简单的实现方法:

小二上代码

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.UI;

public class MovieText : MonoBehaviour
{
    //用来显示字幕的TextUi
    public Text Titles;
    //文件流,用于读取文本
    StreamReader sr;
    //文本中的字幕的行数
    int lineCount=0;


    void Start()
    {
        StartCoroutine(Display());
    }

    IEnumerator Display()
    {
        sr= new StreamReader(Application.dataPath + "/text.txt");
        //创建一个流,用于读取行数
        StreamReader srLine = new StreamReader(Application.dataPath + "/text.txt");
        //循环来读取行数,直到为null停止
        while(srLine.ReadLine()!=null)
        {
            lineCount++;
        }
        //关闭并释放流
        srLine.Close();
        srLine.Dispose();
        for (int i = 0; i < lineCount; i++)
        {
            string tempText = sr.ReadLine();
            Titles.text = tempText.Split('$')[0];
            Debug.Log(Titles.text);
            //也就是
            float tempTime;
            //将文中的那个$3中的3读取出来
            if(float.TryParse(tempText.Split('$')[1], out tempTime))
            {
                //协程等待
                yield return new WaitForSeconds(tempTime);
            }
        }

        //关闭并释放流
        sr.Close();
        sr.Dispose();
    }
}

以上便是所有的代码,Unity的编译器中要设置的东西也并不多,只需要创建一个text便可,让后把它拖到脚本的Text变量上面。然后运行就OK了,之后我们就能看到这样的字幕显示在界面上了,哦,最后一件事,就是那个text.txt文件,下面是text的内容:

  

轻轻的我走了,$2
正如我轻轻的来;$2
我轻轻的招手,$2
作别西天的云彩。$2

在每行的最后那个$2看起来是有点多余,主要是用于字符串的分割,2就是这个协程

yield return new WaitForSeconds(tempTime);

中穿入的参数,还有就是float.TryParse()的运用,用于返回tempTime;

最后附上一张运行图,

感觉有点low... 就这样了QAQ

原文地址:https://www.cnblogs.com/springword/p/6083217.html