当前位置: 首页 > wzjs >正文

网站策划做营销推广河南网站推广优化

网站策划做营销推广,河南网站推广优化,做网站的前端框架,企业网站案例展示Unity TextMeshPro 实现文本逐字淡出效果 前言项目思路场景布置代码编写 前言 在处理角色对话时经常会用到一些文本动画,正好记录一下。使用 TextMeshPro,我们可以直接操作文本的顶点数据,实现诸如渐变、动画等效果,为游戏界面和…

Unity TextMeshPro 实现文本逐字淡出效果

  • 前言
  • 项目
    • 思路
    • 场景布置
    • 代码编写

前言

在处理角色对话时经常会用到一些文本动画,正好记录一下。使用 TextMeshPro,我们可以直接操作文本的顶点数据,实现诸如渐变、动画等效果,为游戏界面和应用程序增添动感。
逐字淡出效果

项目

思路

实现文字缓慢出现的关键在于:

  1. 初始状态设置
    在文字显示前,将所有字符的顶点颜色透明度(Alpha)设为 0,确保文本初始完全不可见。

  2. 逐字符渐显
    利用协程逐个为每个字符开启渐变效果,缓慢将透明度从 0 过渡到 255。这里需要注意:

  • 避免在渐显过程中频繁调用 ForceMeshUpdate(),因为每次调用都会重置网格数据,可能导致其他字符状态被覆盖。
  • 预先缓存目标字符的材质索引、顶点索引和颜色数组,确保只修改目标字符的数据。
  1. 网格数据同步
    每次修改完顶点颜色后,需要将颜色数组重新应用到网格上,并调用 UpdateVertexData() 来刷新显示。

场景布置

场景截图

代码编写

using UnityEngine;
using TMPro;
using System.Collections;
using UnityEngine.PlayerLoop;public class TextFadeIn : MonoBehaviour
{public float fadeDuration = 0.5f; // 每个字符的渐变时间public float interval = 0.1f;     // 字符之间的间隔时间public TMP_Text textComponent;public string originalText;private void Update(){if (Input.GetKeyDown(KeyCode.Space)){ShowTextAnim("The key is not to re enable automatic mesh generation after modifying the vertex color. Instead, set the required properties first, generate the mesh, and finally modify the vertex color to ensure that the mesh is not reset after manual modification.");}}public void ShowTextAnim(string txtString){StopAllCoroutines();textComponent.text = "";originalText = txtString;StartCoroutine(DelayedStart());}IEnumerator DelayedStart(){// 先设置好文本和属性,启用 word wrapping(如果需要)textComponent.enableWordWrapping = true;textComponent.text = originalText;// 生成网格数据,此时网格数据已经包含 word wrapping 的效果textComponent.ForceMeshUpdate();// 获取最新的文本信息TMP_TextInfo textInfo = textComponent.textInfo;// 将所有可见字符的顶点颜色的 alpha 设置为 0(透明)for (int i = 0; i < textInfo.characterCount; i++){if (!textInfo.characterInfo[i].isVisible)continue;int materialIndex = textInfo.characterInfo[i].materialReferenceIndex;int vertexIndex = textInfo.characterInfo[i].vertexIndex;Color32[] vertexColors = textInfo.meshInfo[materialIndex].colors32;for (int j = 0; j < 4; j++){vertexColors[vertexIndex + j].a = 0;}}// 应用顶点颜色更改到网格for (int i = 0; i < textInfo.meshInfo.Length; i++){textInfo.meshInfo[i].mesh.colors32 = textInfo.meshInfo[i].colors32;}textComponent.UpdateVertexData(TMP_VertexDataUpdateFlags.Colors32);// 等待一帧确保更改已生效yield return null;// 开始字符渐入效果StartCoroutine(ShowText());}IEnumerator ShowText(){TMP_TextInfo textInfo = textComponent.textInfo;int totalCharacters = textInfo.characterCount;// 逐个启动字符渐显协程(顺序进行)for (int i = 0; i < totalCharacters; i++){if (textInfo.characterInfo[i].isVisible){// 等待当前字符渐显完成后再处理下一个字符yield return StartCoroutine(FadeCharacter(i));yield return new WaitForSeconds(interval);}}}IEnumerator FadeCharacter(int characterIndex){TMP_TextInfo textInfo = textComponent.textInfo;if (characterIndex >= textInfo.characterCount || !textInfo.characterInfo[characterIndex].isVisible)yield break;// 缓存目标字符的相关信息TMP_CharacterInfo charInfo = textInfo.characterInfo[characterIndex];int materialIndex = charInfo.materialReferenceIndex;int vertexIndex = charInfo.vertexIndex;Color32[] vertexColors = textInfo.meshInfo[materialIndex].colors32;float elapsedTime = 0f;while (elapsedTime < fadeDuration){elapsedTime += Time.deltaTime;float alpha = Mathf.Clamp01(elapsedTime / fadeDuration);byte alphaByte = (byte)(alpha * 255);// 仅更新目标字符的顶点颜色for (int j = 0; j < 4; j++){vertexColors[vertexIndex + j].a = alphaByte;}// 将更新后的颜色数组直接应用到对应网格textInfo.meshInfo[materialIndex].mesh.colors32 = vertexColors;textComponent.UpdateVertexData(TMP_VertexDataUpdateFlags.Colors32);yield return null;}}private void OnDisable(){StopAllCoroutines();}
}
http://www.dtcms.com/wzjs/350550.html

相关文章:

  • 怎么删除wordpress主题正规seo一般多少钱
  • 用织梦做的手机网站怎么才能和电脑同步网络营销推广平台
  • 专做ppt的网站网络推广公司专业网络
  • 电子商务建立网站前期准备自己做一个网站要多少钱
  • 天猫网站建设的目标是什么自媒体平台注册官网下载
  • word贴到wordpress搜索引擎优化的目标
  • 内蒙古政府网站建设 论文抖音代运营公司
  • 广西教育平台网站建设seo模拟点击工具
  • 客户管理系统源代码南宁网站seo大概多少钱
  • 上海网站备案信息注销上海外贸网站seo
  • wordpress全站加密网络推广优化服务
  • 建手机网站seowhy论坛
  • 网站后台图片编辑器账户竞价托管费用
  • 大连网站建站app拉新渠道商
  • 网站首页页面网络营销技巧
  • 网站建设上机测试题小红书推广运营
  • 怎么创建游戏软件windows10优化软件
  • 网站怎么做qq客服腾讯搜索引擎入口
  • 韩国最牛的设计网站大全网络营销案例成功案例
  • 北京企业网站推广哪家公司好宁波seo推广优化
  • 做网站哪里需要用钱石家庄新闻头条新闻最新今天
  • 实时网站制作昆明网站seo公司
  • 重庆网站建设电脑版网络营销经典失败案例
  • 福州哪里做网站业务推广平台
  • 仪征做网站口碑营销的步骤
  • 自助建站h5百度账号怎么注销
  • 网络服务提供者知道或者应当知道网络用户利用其网络服务侵害他学seo网络推广
  • 怎么做浏览网站的小程序自媒体视频剪辑培训班
  • 个人作品展示网站友情链接的四个技巧
  • 南宁哪个公司做网站好快速网站推广