文章目录

  • 前言
  • 1 创建预制体
    • 1.1 新建一个空物体
    • 1.2 添加TextMehsPro组件
    • 1.3 引入TMP资源文件
    • 1.4 新建SDF以支持中文
    • 1.5 修改TMP样式
  • 2 跟随鼠标
    • 2.1 修改预制体
    • 2.2 编写脚本
    • 2.3 展示
  • 3 更多漂浮文字
    • 3.1 移动和缩放显示
      • 3.1.1 制作预制体
      • 3.1.1 DamagePopup脚本
      • 3.1.2 输入管理脚本
      • 3.1.3 展示
  • 4 总结

前言

这个实现学习于CodeMonkey的视频。How to make Damage Popup Text (Unity Tutorial)


1 创建预制体

1.1 新建一个空物体

1.2 添加TextMehsPro组件

1.3 引入TMP资源文件

1.4 新建SDF以支持中文

如果不添加中文字体的SDF,中文会乱码,笔者添加了黑体。

生成了名为 字体名字 + SDF 的文件。

1.5 修改TMP样式

这是笔者修改的样式。

效果

2 跟随鼠标

2.1 修改预制体

修改锚点和中心点。

2.2 编写脚本

using TMPro;
using UnityEngine;public class InfoPopup : MonoBehaviour
{Vector3 mOffset = new Vector3(1, 0);void Start(){// 修改TMP显示内容GetComponent<TextMeshPro>().text = "点击建造";}void Update(){Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);if (Physics.Raycast(ray, out RaycastHit raycastHitInfo)){// 跟随鼠标var mousePos = raycastHitInfo.point;mousePos.z = -1f;transform.position = mousePos + mOffset;}}
}

拖到预制体上,然后放在场景中。

2.3 展示

3 更多漂浮文字

3.1 移动和缩放显示

3.1.1 制作预制体

只修改了材质,然后加入脚本。

3.1.1 DamagePopup脚本

using TMPro;
using UnityEngine;public class DamagePopup : MonoBehaviour
{protected TextMeshPro mTextMeshPro;protected float mSpeed;protected float mDisappearSpeed;protected float mDelayTime;protected float mPassTime;protected static int mSortingOder = 100;private float mScaleIncreaseSpeed = 1f;private float mScaleDecreaseSpeed = 1f;private Vector3 moveVector = new Vector3(.7f, 1) * 10f;private void Awake(){mTextMeshPro = GetComponent<TextMeshPro>();// TODO: 从配置中读取速度mSpeed = 1;mDelayTime = 1;mDisappearSpeed = 3;if (mSortingOder >= int.MaxValue) mSortingOder = 100;mTextMeshPro.sortingOrder = mSortingOder++;mTextMeshPro.fontSize = 10;mTextMeshPro.color = Color.yellow;}void Update(){// 偏移transform.position += moveVector * Time.deltaTime;// 持续时间过长可能反向移动moveVector -= moveVector * 8 * Time.deltaTime;// 先变大,后缩小if (mPassTime < mDelayTime * 0.5f){transform.localScale += Vector3.one * mScaleIncreaseSpeed * Time.deltaTime;}else{transform.localScale -= Vector3.one * mScaleDecreaseSpeed * Time.deltaTime;}// 变透明直到消失if (mPassTime >= mDelayTime){var textColor = mTextMeshPro.color;textColor.a -= mDisappearSpeed * Time.deltaTime;mTextMeshPro.color = textColor;if (textColor.a < 0){Destroy(gameObject);}}mPassTime += Time.deltaTime;}public void SetText(string text){mTextMeshPro.text = text;}
}

3.1.2 输入管理脚本

using UnityEngine;public class InputMgr : MonoBehaviour
{static public InputMgr instance;public GameObject PopupPerfab;private void Awake(){instance = this;}void Update(){if (Input.GetMouseButtonDown(0)){Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);if (Physics.Raycast(ray, out RaycastHit raycastHitInfo)){var t = Instantiate(PopupPerfab, raycastHitInfo.point, Quaternion.identity);t.GetComponent<DamagePopup>().SetText("100");}}}
}

挂载预制体

3.1.3 展示

4 总结

做多几个漂浮文字后发现,其实可以使用工厂模式去归类,又因为可能会new很多漂浮文字,后期可以加入对象池优化。

【Unity】漂浮文字相关推荐

  1. unity Text文字淡入效果

    unity Text文字淡入效果 CrossFadeAlpha()方法 先将alpha降为0,再改为1. public Text t;void Start() {t.CrossFadeAlpha(0f ...

  2. 魔兽怎样利用编辑器制作一个能够利用漂浮文字显示伤害的功能

    魔兽编辑器使用脚本语言来制作功能,可以使用 Trigger 编辑器来制作一个触发器,在触发时显示伤害数值. 具体步骤如下: 打开魔兽编辑器,在触发器编辑器中新建一个触发器. 在触发器的事件中添加&qu ...

  3. Unity Text文字超框,末尾显示‘...’省略号

    参考博客Unity 实现文字过长显示省略号, // 超框显示...public static void SetTextWithEllipsis(this Text textComponent, str ...

  4. Unity插件——文字转朗读语音RtVioce插件功能/用法/下载

    目录 插件 - RtVioce 一.使用步骤 1.导入进Unity(插件形式为 .unitypackage) 2.添加所需Prefab 3.代码调用 二.下载地址 插件 - RtVioce 支持的Un ...

  5. Unity TTS文字转语音 朗读 基于SpeechLib

    本教程适用于不借助第三方语音平台,仅用Windows平台组件 进行文字转语音,基于SpeechLib 什么是TTS?TTS是Text To Speech的缩写,即"从文本到语音", ...

  6. unity 2d文字跟随主角移动_使用 Unity 粒子系统实现 2D 人物足迹效果

    前言 项目中使用的基本角色控制脚本是由 Unity Learn 中的官方教程 John Lemon's Haunted Jaunt(很不错的教程)中的示例控制脚本改进而来.其基本思路是根据输入计算一个 ...

  7. Unity之文字提示动画

    推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 在游戏中,玩家进行了某种操作,往往需要给玩家一种提示,以告诉玩家操作结果:成功或失败提示.用于提示的的方式可以是弹框,也可以是文字渐隐 ...

  8. unity TMP文字乱码解决:Unicode Range 16字节汉字对应表

    选择好TMP字体后,在Inspector上方点击Update ATLas Texture按钮,把自己需要的文字的16字节编码输入到红框内点击生成即可. 举例:如果想要增加"七"和& ...

  9. [转]Unity之文字提示动画

    在游戏中,玩家进行了某种操作,往往需要给玩家一种提示,以告诉玩家操作结果:成功或失败提示.用于提示的的方式可以是弹框,也可以是文字渐隐.弹框就是显示一些信息,并带有确定/取消按钮等.文字渐隐就是显示文 ...

最新文章

  1. Python代码高亮显示工具
  2. 远程方法调用简单实现
  3. python自动化办公入门书籍推荐-好书推荐 | Python 如此神奇,让繁琐工作自动化...
  4. 物理机Windoes上运行VWware 虚拟机连接外部物理机、外部网络的方法
  5. 卢卡斯定理及其卢卡斯定理的拓展
  6. 图解从 URL 到网页通信原理
  7. Chrome开发者工具对Vue应用的支持
  8. PHP: 深入pack/unpack
  9. JQuey中 attr('checked', true)设置状态只有第一次有用
  10. Java proxy 子类代理
  11. Spring Boot : Whitelabel Error Page解决方案
  12. 测试nb信号的软件_NB频点概述
  13. 行业案例 | 悬镜DevSecOps智适应威胁管理解决方案获评信通院“2021云安全守卫者计划优秀案例”
  14. 【蓝桥杯选拔赛真题48】Scratch跳舞机游戏 少儿编程scratch蓝桥杯选拔赛真题讲解
  15. 传奇世界修改服务器时间,《传奇世界手游时长版》测试结束公告
  16. [MSSQL]【SQL SERVER 2005+版本行转列示例】(2012年1-8月水源槑党25强榜单新鲜出炉)
  17. c语言实验报告 订票系统,【C语言】火车订票系统
  18. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day17】—— 数据库4
  19. 继微博之后,.fans建站成饭圈新宠
  20. 自媒体领域选择大全,自媒体新手参考资料

热门文章

  1. 职业经理人七项修炼-转自栖息谷
  2. 互联网启示:从生命起源到智慧宇宙的进化全景图
  3. 利用percona-toolkit 工具来检测mysql 主从数据库同步以及实现同步
  4. 传奇服务器需要什么配置?传奇服务器租用价格表
  5. mapboxGL中多图标加载的实现
  6. 像李欣频一样思考人生~
  7. 《启示录:打造用户喜爱的产品》第一部分 人员6 招聘产品经理
  8. iOS 多线程-GCD栅栏方法
  9. STM32 嵌入式学习入门(4)——PWM原理
  10. BananaPi Wifi 连接