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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM