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

using Scene;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;namespace UIFW
{public class InitUIFrm : INormalUserInterface{/// <summary>/// 介绍的内容/// </summary>string[] _IntroContent = {"来自普通山村的韩立,经过家中亲戚推荐进入当地的江湖门派七玄门,又被门派中的长老墨居仁看中成为其弟子,每日修炼名为《长春功》的口诀。" ,"期间随着同伴的消失而发现师父的可疑之处,另外偶然得到了一瓶能催化药草,以及救下门派师兄厉飞雨并与其结为知己。","某日与师父摊牌对决,不慎战败,本想遭其毒手却侥幸存活下来,在其合作者余子童口中得知自己练就了一身修仙技能及墨居仁的真相后将其灭口。","心想重获自由,但读完师父的遗书后才发现自己被下的毒还没有解完,而且要远行找到其家人才可获得真正解药。得知此事的韩立决定完成师父的遗愿从而拯救自己,从此踏上了修仙之路。"};//每次透明度的增长值int _AlphaSpan = 10;//AlpheLine 当前字对应的alpha度,当为100的时候完全显示字体Dictionary<int, int> _AlphaLine;//当前迭代索引 txtIndex==intro[?].Length的时候则为print完成int _txtIndex = 0;//当前迭代开始索引,已经透明度为100的可以保存起来,避免遍历提高效率int _BeginIndex = 0;//当前Print索引int _PrintIndex = 0;//当前显示文本string _NowText;//Text组件的color颜色文本值string txt_OriginColor;//TimeSpan计时器float _TimeSpan = .2f;float _Timer = 0;//是否Printbool _IsPrint = false;bool _IsEnd = false;//组件 TextText txt_IntroValue;//btnButton btn_OK;public InitUIFrm(){base.ResName = "InitUIFrm.prefab";}public override void SetObject(GameObject _gameObject){base.TraParent = _UISystem.TraNormal;base.SetObject(_gameObject);}public override void Initialize(){base.Initialize();_AlphaLine = new Dictionary<int, int>();//获得组件txt_IntroValue = UITool.GetComponentFromChildNode<Text>(_GameObject.transform, "txtIntroValue");btn_OK = UITool.GetComponentFromChildNode<Button>(_GameObject.transform, "btnOK");//获得颜色值txt_OriginColor = ColorUtility.ToHtmlStringRGB(txt_IntroValue.color);//注册UI事件btn_OK.onClick.AddListener(() =>{//取消打印文本_IsPrint = false;});//开启Print文本_IsPrint = true;}public override void Update(){base.Update();//开启Print文本if (_IsPrint){if (_PrintIndex == _IntroContent.Length){_IsPrint = false;return;}if (_txtIndex < _IntroContent[_PrintIndex].Length){//等一段时间在继续打印下一个字while (_Timer < _TimeSpan){_Timer += Time.deltaTime;return;}_Timer = 0;//增加一个字_txtIndex++;}else{//打印完一段txt_IntroValue.color = new Color(txt_IntroValue.color.r, txt_IntroValue.color.g, txt_IntroValue.color.b, 0);//清空text的值,等下一轮打印_PrintIndex++;//数据初始化txt_IntroValue.text = "";_BeginIndex = 0;_txtIndex = 0;_AlphaLine.Clear();txt_IntroValue.color = new Color(txt_IntroValue.color.r, txt_IntroValue.color.g, txt_IntroValue.color.b, 1);return;}for (int i = _BeginIndex; i < _txtIndex; i++){if (!_AlphaLine.ContainsKey(i)){_AlphaLine.Add(i, 0);}int alpha = _AlphaLine[i];//如果alpha已经大于100了,可以完全显示了,>100的没有标签,if (alpha >= 100){_BeginIndex = i + 1;_NowText += _IntroContent[_PrintIndex].Substring(0, _BeginIndex);}else //小于100的每个字都有标签,大于txtIndex的甚至都还轮不到它们显示{//增加颜色标签,归一化为两位数_NowText += $"<color=#{txt_OriginColor}";if (_AlphaLine[i] < 10){_NowText += $"0{_AlphaLine[i]}>";}else{_NowText += $"{_AlphaLine[i]}>";}_NowText += $"{_IntroContent[_PrintIndex].Substring(i, 1)}</color>"; //把i这个字加入//插值增加_AlphaLine[i] += _AlphaSpan;}}//获得_NowText,文本赋值txt_IntroValue.text = _NowText;_NowText = "";}else if(!_IsEnd){_IsEnd = true;//关闭自身GameManager.Instance.CloseUIFrm<InitUIFrm>();//开始播放动画Camera.main.GetComponent<VideoPlayer>().Play();//跳转到开始场景//GameManager.Instance.SetSceneState(new StartSceneState("StartScene", GameManager.Instance.SceneMgr));}}public override void Release(){txt_IntroValue = null;btn_OK = null;base.Release();}}
}

Unity UGUI打字机文本渐变相关推荐

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

    Unity UGUI打字机文本渐变--工具脚本 using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;pu ...

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

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

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

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

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

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

  5. 【游戏开发实战】Unity UGUI Text图文混排(聊天文字混表情),支持动态表情,出招吧表情帝

    文章目录 一.前言 二.最终效果 三.具体使用 1.导入表情素材 2.设置图片格式 3.生成表情图集 4.UI-EmojiFont.shader 5.材质球 四.测试 五.结束语 一.前言 点关注不迷 ...

  6. Unity UGUI实现图文混排

    目前在unity实现图文混排的好像都是通过自定义字体然后在文本获取字符的位置,用图片替换掉图片标签,这样对于支持英文来说,并没有什么影响.然后对于中文来说就是一个相当麻烦的事了,毕竟图文混排多用于游戏 ...

  7. Unity UGUI图文混排源码(二)

    Unity UGUI图文混排源码(一):http://blog.csdn.net/qq992817263/article/details/51112304 Unity UGUI图文混排源码(二):ht ...

  8. Unity UGUI图文混排源码(三) -- 动态表情

    这里是根据图文混排源码(二)进一步修改的,其他链接也不贴了,就贴一个链接就好了,第一次看这文章的同学可以先去看看其他几篇文章 Unity UGUI图文混排源码(二):http://blog.csdn. ...

  9. Unity UGUI

    超详细的基础教程传送门:(持续更新中) Unity UGUI之Canvas&EventSystem:http://blog.csdn.net/qq992817263/article/detai ...

最新文章

  1. 安装tensorflow-gpu==1.13.1成功案例
  2. fastapi jinja2_(入门篇)Python框架之FastAPI——一个比Flask和Tornado更高性能的API 框架
  3. Java if语句深度解析
  4. Apache和Nginx的区别
  5. IntelliTrace 调试、定位异常
  6. 《学习OpenCV》课后习题解答(第三章)(仅供参考)
  7. 常见的HTTP错误码
  8. android之uniapp调用weex的module
  9. ASP.NET MVC 对于视图引擎的优化
  10. 百度拾取坐标系统平台根据点名获取坐标
  11. 使用Python 去除kg视频水印代码
  12. 软件工程——数据流图(DFD)
  13. 灵异问题,使用EasyConnect后,用navicat可以访问数据库,但是用Idea跑项目连接超时怎么办?
  14. 小伙伴们,线程生命周期、线程池生命周期别再傻傻分不清楚了!!!
  15. 基于vue3+ts+scss的后台管理系统(二)----excel的导入导出
  16. HTML5响应式手机软件下载网站源码 APP应用软件下载站pbootcms模板
  17. SRM- Golink体验报告
  18. (算法)求数组中数字组合(可多值组合)相加最接近目标数的组合(可能多个)
  19. 宿舍管理系统(精简版)
  20. curl_exec函数

热门文章

  1. Burpsuite 2.1下载
  2. 考虑柔性负荷的综合能源系统低碳经济调度 综合能源系统(IES)逐渐成为实现减排目标的重要支撑技术
  3. 【连续介质力学】粘性、弹性和塑性的区别,非牛顿流体
  4. 袋鼠云flinksql连接器构建
  5. NeuroImage:MEG/EEG数据中常见的错误
  6. 刚来公司一周,搭建了一套持续集成交付环境,研发效率直接提升20倍,CTO再次给我涨薪!!(全程实战,建议收藏)
  7. DELTA并联工业机器人
  8. Keil如何生成bin文件 - 附详细操作图文
  9. TDDI/ITD原理总结(touch 自容原理)-----/*自己总结*/
  10. JAVA拓展新的数据库_JavaEE 之 数据库技术 MySQL 拓展应用