Unity UGUI打字机文本渐变——工具脚本

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class InitUIFrm : MonoBehaviour
{Text m_TextValue;//组件 Textstring m_TextValueColor;//Text组件的color颜色文本值// 介绍的内容string[] m_IntroContent = {"战争学院是英雄联盟裁决瓦罗然政治纠纷之地。这里是绝对中立的领土,严禁任何纷争,违反者将面对学院的士兵和魔法。学院坐落于一座巨型能量节点,由黑曜石、贵金属和魔法塑形而成。它位于莫格罗恩关隘的北方入口,刚好位于相互敌对的城邦爱欧尼亚和诺克萨斯之间。作为一个旅行者,一定不要错过战争学院自北向南的超级堡垒,还有著名的巨石峰" ,"除了作为英雄联盟所在,战争学院大概是瓦罗然最重要的权威军事培训机构。很多图书馆都致力于收录战争学院的英雄信息,并向所有研究者开放。比如《利刃守则》就是介绍战斗中刀剑技巧的权威指南,这部书来自联盟最卓越的英雄们 —— 希维尔、易大师和泰达米尔,这只是其中一小部分名字。","在战争学院魔法知识也有它的一席之地,不过这些知识都是军事机密,不会向游客免费开放。联盟紧紧控制着魔法知识的流传途。这些知识是联盟的力量之源,少量小心谨慎的施法者会试图绕过联盟的许可管理来寻求自己的魔法之路,不过这几乎不可能,只有通过成为联盟的见习学徒法师才有机会。见习学徒们有机会获得魔法能力成为召唤者,但最终他们都会都会成为联盟的一部分,并受到联盟决议的管理和限制,迎接背叛者的只有死亡… 年长的召唤者会迅速提醒年轻新晋者们这个事实。"};int m_AlphaSpan = 30;//每个渐变颜色之间的间隔Dictionary<int, int> m_AlphaLine;//AlpheLine 当前字对应的alpha度,当为100的时候完全显示字体string m_NowText;//当前显示的文字内容int m_TextIndex = 0;//当前迭代索引 txtIndex==intro[?].Length的时候则为print完成int m_BeginIndex = 0;//当前迭代开始索引,已经透明度为100的可以保存起来,避免遍历提高效率int m_NowPrintIndex = 0;//当前Print索引float m_TimeSpan = 0.1f;//每个字的间隔时间float m_Timer = 0;//计时器bool m_IsPrint = false;//是否打印bool m_IsEnd = false;//是否打印结束private void Awake(){m_AlphaLine = new Dictionary<int, int>();m_TextValue = transform.GetComponent<Text>();Initialize();}/// <summary>/// 开启打字机/// </summary>public  void Initialize(){//获得颜色值m_TextValueColor = ColorUtility.ToHtmlStringRGB(m_TextValue.color);//开启打印m_IsPrint = true;}/// <summary>/// 打印方法/// </summary>public void Print(){if (m_IsPrint){if (m_NowPrintIndex == m_IntroContent.Length){m_IsPrint = false;return;}//打印内容if (m_TextIndex < m_IntroContent[m_NowPrintIndex].Length){//等一段时间在继续打印下一个字while (m_Timer < m_TimeSpan){m_Timer += Time.deltaTime;return;}m_Timer = 0;//增加一个字m_TextIndex++;}else{//打印完一段m_TextValue.color = new Color(m_TextValue.color.r, m_TextValue.color.g, m_TextValue.color.b, 0);//清空text的值,等下一轮打印m_NowPrintIndex++;//数据初始化m_TextValue.text = "";m_BeginIndex = 0;m_TextIndex = 0;m_AlphaLine.Clear();m_TextValue.color = new Color(m_TextValue.color.r, m_TextValue.color.g, m_TextValue.color.b, 1);Debug.Log("这段已经打完了");return;}for (int i = m_BeginIndex; i < m_TextIndex; i++){if (!m_AlphaLine.ContainsKey(i)){m_AlphaLine.Add(i, 0);}int alpha = m_AlphaLine[i];//如果alpha已经大于100了,可以完全显示了,>100的没有标签,if (alpha >= 100){m_BeginIndex = i + 1;m_NowText += m_IntroContent[m_NowPrintIndex].Substring(0, m_BeginIndex);}else //小于100的每个字都有标签,大于txtIndex的甚至都还轮不到它们显示{//增加颜色标签,归一化为两位数m_NowText += $"<color=#{m_TextValueColor}";if (m_AlphaLine[i] < 10){m_NowText += $"0{m_AlphaLine[i]}>";}else{m_NowText += $"{m_AlphaLine[i]}>";}m_NowText += $"{m_IntroContent[m_NowPrintIndex].Substring(i, 1)}</color>"; //把i这个字加入//插值增加m_AlphaLine[i] += m_AlphaSpan;}}获得_NowText,文本赋值m_TextValue.text = m_NowText;m_NowText = "";}else if (m_IsEnd){Debug.Log("打印完所有的内容");}}public  void Update(){Print();}
}

Unity UGUI打字机文本渐变——工具脚本相关推荐

  1. Unity UGUI打字机文本渐变

    利用富文本,网上大多只是文字介绍,我把他实现出来了.当然这里都是基于我在游戏当中的实现,看看意思,原理就好. using Scene; using System.Collections.Generic ...

  2. Unity游戏文本自动化生成脚本工具-姜雪伟-专题视频课程

    Unity游戏文本自动化生成脚本工具-717人已学习 课程介绍         在游戏开发中,策划填写好配置表,程序拿到配置表后,根据配置表中的项,在代码中定义结构体,编写加载函数接口,获取数据接口, ...

  3. Unity UGUI 之 实现 Text 文本文字过长,省略号显示(TextMeshPro 和常规 Text 二种方法)

    Unity UGUI 之 实现 Text 文本文字过长,省略号显示(TextMeshPro 和常规 Text 二种方法) 目录 Unity UGUI 之 实现 Text 文本文字过长,省略号显示(Te ...

  4. Unity 3D - UGUI 自适应文本框

    Unity 3D - UGUI 自适应文本框 : 说明 : 同一个文本框根据内容 , 自动缩放文本框大小 . 效果图 : 实现方式 ( 重点 ) : 第一步 : 创建一个文本( Text ) , 文本 ...

  5. shell脚本三大文本处理工具

    [-]目录 一简介 二grep命令 格式选项 grep与正则表达式结合 egrep和fgrep 三sed命令 sed命令基本用法 sed文本定位 sed基本编辑命令 sed高级编辑命令 四awk命令 ...

  6. shell脚本的文本处理工具

    一.cut cut 的工作就是"剪",具体的说就是在文件中负责剪切数据用的.cut 命令从文件的每 一行剪切字节.字符和字段并将这些字节.字符和字段输出. 1)基本用法 cut [ ...

  7. Unity UGUI开发设计及案例讲解

    Unity--UGUI开发设计及案例讲解 1. Unity4.6跟以前的版本的最大区别首先在于在层级视图中点鼠标右键时出现的弹出菜单上,它把以前许多的菜单项进行了归类,比如cube sphere ca ...

  8. Unity UGUI优化与原理【unity官方】

    来源( 来源:unity官方 Optimizing Unity UI ) 官方链接: [1]  https://unity3d.com/cn/learn/tutorials/temas/best-pr ...

  9. [Unity C#教程] 游戏对象和脚本

    文章转载自:https://www.cnblogs.com/UnityYork/p/7704803.html [Unity C#教程] 游戏对象和脚本 博主最近在学习Unity,发现一个英文教程很好. ...

最新文章

  1. python最优分箱计算iv值_Python计算woe和iv值
  2. H264 NALU 使用PS封装 RTP发送
  3. Linux运维系统工程师系列---25
  4. 修改ALSM_EXCEL_TO_INTERNAL_TABLE的限制
  5. 1356. Sort Integers by The Number of 1 Bits 根据数字二进制下 1 的数目排序
  6. Maven用仓库外的jar进行编译
  7. 水抗攻击(APT攻击手段)
  8. [CentOs7]搭建ftp服务器(3)——上传,下载,删除,重命名,新建文件夹
  9. 相机模型与标定(十)--RANSAC算法
  10. Python获取二维矩阵每列最大值
  11. 一个完整的测试计划模板
  12. 【韦东山嵌入式Linux】Linux命令入门笔记
  13. CentOS7下fdisk分区工具和LVM的简单使用
  14. 从零搭建美团饿了么外卖红包CPS小程序教程
  15. Java输入小数和整数求COSx_嗖嗖移动大厅 源代码 Java初级小项目
  16. Vista激活时出现“0X80072EFE”故障及解决
  17. 20172307 / 20172311 结对编程项目-四则运算 第三周总结
  18. 树莓派3初始化安装(Raspberry Pi III)
  19. week9 day4 CSS网页布局
  20. 绝版 ~ 原来 Python 画画可以这么简单

热门文章

  1. 前端Q原创精品文章分类整理(文末送现金红包)
  2. DIV布局——粉色的鲜花礼品电商(4页) HTML+CSS+JavaScript 学生网上商城网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
  3. SAP MM模块-实施顾问岗位-面试手册-面试介绍
  4. 华为手机android目录,华为手机中的文件夹代表什么,哪些可以删除,看完秒懂...
  5. 软件模型之业务建模|愿景
  6. WPF 自实现Arc控件和Pie控件(根据起止角度画圆弧或扇形)
  7. 智库直播回放 | 乡村振兴与数字经济
  8. 项目中组件工厂的注册方法
  9. dist-packages与site-packages
  10. 在计算机领域中通常用bips来描述,9月计算机一级MsOffice考试章节练习题