在看电影的时候,没有字幕总觉得很别扭,尤其是英语电影,对于英语不好的人来说,就一定需要有个中文字幕存在,下面这篇就给大家分享下在Unity中实现一个简单的字幕轮播效果。
代码如下:
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.UI;
using System;
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;
效果图如下: