文章目录

  • 前言
  • 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. C++的STL 栈 实现四则运算
  2. Hinton口中破解宇宙终极秘密的GPT-3厉害在哪?这有篇涂鸦详解
  3. 使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)
  4. jQuery设置和获取HTML、文本和值
  5. python多图拼接并利用resnet提取特征
  6. HBase架构:HLog region store memstore compact storefile
  7. Hadoop源码解读系列目录
  8. java中对象的生存期_JSP中JavaBean的生命周期
  9. 什么是CRM Sales category
  10. java 酒店预定 app_Android应用源码酒店在线预定app项目全套
  11. 密码编码学之AES及其工作模式详解
  12. Delphi 与 DirectX 之 DelphiX(39): TDIB.Sharpen();
  13. 苹果修复被 XCSSET 恶意软件滥用的3个 0day
  14. [渝粤教育] 盐城工学院 大学物理(力学、振动与波动) 参考 资料
  15. 视频教程-C语言编程初级入门-C/C++
  16. 开发分布式WebIm--1(设想)
  17. windows 下删除EFI分区方法
  18. 你的Web系统真的安全吗?
  19. 不完全免疫算法简介AIMA--AIS学习笔记7
  20. 从零学习 InfiniBand-network架构(三) —— IB核心传输引擎Queue Pair

热门文章

  1. 随机生成10个0-100的正整数
  2. 老男孩-筷子兄弟(歌词)
  3. 沉痛悼念!中国NLP 先行者、机器翻译鼻祖刘倬逝世
  4. 闲人闲谈PS之三十一——新收入准则中的合同损失计提
  5. JavaScript语句
  6. .Net培训教你用C#开发手机游戏!
  7. 【香蕉oi】Tree(欧拉序、线段树)
  8. 网络摄像机带宽测试软件,网络网络摄像机分辨率与带宽计算方法
  9. 液晶拼接处理器_液晶拼接大屏运用设施
  10. 零基础学会3DsMax超炫酷战斗机飞行动画