【Unity】漂浮文字
文章目录
- 前言
- 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】漂浮文字相关推荐
- unity Text文字淡入效果
unity Text文字淡入效果 CrossFadeAlpha()方法 先将alpha降为0,再改为1. public Text t;void Start() {t.CrossFadeAlpha(0f ...
- 魔兽怎样利用编辑器制作一个能够利用漂浮文字显示伤害的功能
魔兽编辑器使用脚本语言来制作功能,可以使用 Trigger 编辑器来制作一个触发器,在触发时显示伤害数值. 具体步骤如下: 打开魔兽编辑器,在触发器编辑器中新建一个触发器. 在触发器的事件中添加&qu ...
- Unity Text文字超框,末尾显示‘...’省略号
参考博客Unity 实现文字过长显示省略号, // 超框显示...public static void SetTextWithEllipsis(this Text textComponent, str ...
- Unity插件——文字转朗读语音RtVioce插件功能/用法/下载
目录 插件 - RtVioce 一.使用步骤 1.导入进Unity(插件形式为 .unitypackage) 2.添加所需Prefab 3.代码调用 二.下载地址 插件 - RtVioce 支持的Un ...
- Unity TTS文字转语音 朗读 基于SpeechLib
本教程适用于不借助第三方语音平台,仅用Windows平台组件 进行文字转语音,基于SpeechLib 什么是TTS?TTS是Text To Speech的缩写,即"从文本到语音", ...
- unity 2d文字跟随主角移动_使用 Unity 粒子系统实现 2D 人物足迹效果
前言 项目中使用的基本角色控制脚本是由 Unity Learn 中的官方教程 John Lemon's Haunted Jaunt(很不错的教程)中的示例控制脚本改进而来.其基本思路是根据输入计算一个 ...
- Unity之文字提示动画
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 在游戏中,玩家进行了某种操作,往往需要给玩家一种提示,以告诉玩家操作结果:成功或失败提示.用于提示的的方式可以是弹框,也可以是文字渐隐 ...
- unity TMP文字乱码解决:Unicode Range 16字节汉字对应表
选择好TMP字体后,在Inspector上方点击Update ATLas Texture按钮,把自己需要的文字的16字节编码输入到红框内点击生成即可. 举例:如果想要增加"七"和& ...
- [转]Unity之文字提示动画
在游戏中,玩家进行了某种操作,往往需要给玩家一种提示,以告诉玩家操作结果:成功或失败提示.用于提示的的方式可以是弹框,也可以是文字渐隐.弹框就是显示一些信息,并带有确定/取消按钮等.文字渐隐就是显示文 ...
最新文章
- Python代码高亮显示工具
- 远程方法调用简单实现
- python自动化办公入门书籍推荐-好书推荐 | Python 如此神奇,让繁琐工作自动化...
- 物理机Windoes上运行VWware 虚拟机连接外部物理机、外部网络的方法
- 卢卡斯定理及其卢卡斯定理的拓展
- 图解从 URL 到网页通信原理
- Chrome开发者工具对Vue应用的支持
- PHP: 深入pack/unpack
- JQuey中 attr('checked', true)设置状态只有第一次有用
- Java proxy 子类代理
- Spring Boot : Whitelabel Error Page解决方案
- 测试nb信号的软件_NB频点概述
- 行业案例 | 悬镜DevSecOps智适应威胁管理解决方案获评信通院“2021云安全守卫者计划优秀案例”
- 【蓝桥杯选拔赛真题48】Scratch跳舞机游戏 少儿编程scratch蓝桥杯选拔赛真题讲解
- 传奇世界修改服务器时间,《传奇世界手游时长版》测试结束公告
- [MSSQL]【SQL SERVER 2005+版本行转列示例】(2012年1-8月水源槑党25强榜单新鲜出炉)
- c语言实验报告 订票系统,【C语言】火车订票系统
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day17】—— 数据库4
- 继微博之后,.fans建站成饭圈新宠
- 自媒体领域选择大全,自媒体新手参考资料