zoukankan      html  css  js  c++  java
  • unity对话代码

    这个是根据网上unity GUI打字机教程修改的

    原教程是JS,我给改成了C#,然后增加了许多功能

    这个教程能实现一段文字对话,有打字机显示效果,能写许多对话,能快进对话,总之现在RPG游戏里有的功能都实现了

    直接代码,转载请声明转载自http://www.cnblogs.com/suxsho/

    ---------------------------------------------

    using UnityEngine;
    using System.Collections;
    //-----------------------------------------------------
    //           对话效果
    //-----------------------------------------------------
    public class printTest : MonoBehaviour {
        float letterPause = 0.3f;                                                           //时间间隔
        private string word;                                                                //存储输出文本
        private string printText;                                                           //打印的字
        private int i, j = 0;                                                                //设置第几句话,以及判断是否出现新的语句
        //-----------------------------------------------------
        //           剧本(每句后面加上,)
        //-----------------------------------------------------    
        private string[] Text =
        { 
            "这是一个古老的传说.......",
            "世界上每隔几百年就会出现想毁灭世界的恶魔",
            "而此时,也总会出现一个勇者消灭邪恶",
            "世界已经和平很久了....",
            "随着工业革命、世界大战的到来,人类科技得到了飞速发展",
            "随着科学的进步,无神论相继而来",
            "毁灭世界的恶魔,这只会是一个神话",
            "没有人相信这种奇幻故事中的东西会出现在真实的世界",
            "但是,突然有一天.......",
            "天空中出现了一个巨大的漩涡,世界各地都开始了灾难",
            "科学家无法用现有的科技证明灾难的原因",
            "世界陷入混乱,人们惊慌失措",
            "整个世界就如末日到来",
            "此时,有人想起了恶魔的传说",
            "但是,这个时代已经没有了勇者",
            "然后.......",
            "世界就毁灭了,啊我编不出来了w",
        };
    
        // Use this for initialization
        void Start() 
        {
            textChange();
        }
    
        void OnGUI()
        {
            GUI.Label(new Rect(Screen.width / 2 - 250,Screen.height / 2 - 25 , 500 , 50), printText);
        }
    
        // Update is called once per frame
        void Update () 
        {
            if (Input.GetMouseButtonDown(0))
            {                    
                    //检测对话显示完没有 i = j 就是还没有显示完
                    if (i == j)
                    {
                        letterPause = 0.0f;     //加快显的速度,让对话速度显示完
                    }
                    else
                    {
                        //检测对话语句是否超出了最大限制,超出了就DO STH.
                         if (i < Text.Length - 1)
                         {
                             letterPause = 0.3f;
                            i++;
                            textChange();
                         }
                         else
                         {
                             //DO STH.
    
                         }
                        
                    }                                          
            }          
        }
        /**切换语句功能*/
        void textChange()
        {
            word = "";
            word = Text[i];//把你输出的字先赋值给word
            printText = "";//把你要显示的字先抹除,以便你可以在最初显示的时候显示为空,当然你也可以加上其他字,让他先显示,打字机效果打的字会显示在这个后面
            StartCoroutine(TypeText());
        }
        /**输出文本功能*/
        IEnumerator TypeText()
        {
            foreach (char letter in word.ToCharArray())
            {
                printText += letter;//把这些字赋值给Text
                yield return new WaitForSeconds(letterPause);
            }
            printText += ""; //标记可按键的提示
            j++;                //避免出现下一句不显示的情况将对话记录+1
        }
    }
  • 相关阅读:
    ThinkPHP中PHPExcel的使用(包含日期格式)
    python学习一
    autocomplete 在火狐中文输入的问题
    NPM WARN 错误分析汇总
    react+reatrouter+redux学习笔记
    a++与++a的区别
    ES6箭头函数(Arrow Functions)
    document.referrer
    modem无法编译
    linux时钟浅析 转载
  • 原文地址:https://www.cnblogs.com/suxsho/p/3732600.html
Copyright © 2011-2022 走看看