眾所周知,字幕在電影的放映中十分的重要,特別是像我這樣的英語很差的來說,看英文電影,如果沒有字幕的話是一件十分痛苦的事情,話不多說,現在進入主題,如何在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
