• 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

  • 相关阅读:
    Java中的集合类
    Java中的包装类
    Java中的多线程总结(转)
    Java开发中的23种设计模式详解 (转)
    Java中异常处理和设计
    Jmeter的ForEach控制器
    Jmeter事务控制器
    Jmeter下线程顺序启动
    Jmeter跨线程调用参数
    Jmeter使用Python
  • 原文地址:https://www.cnblogs.com/springword/p/6083217.html
Copyright © 2020-2023  润新知