在文字预制体HUD上新建一个HUD脚本,代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 控制伤害显示
/// </summary>
public class HUD : MonoBehaviour
{
/// <summary>
/// 滚动速度
/// </summary>
private float speed = 1.5f;
/// <summary>
/// 计时器
/// </summary>
private float timer = 0f;
/// <summary>
/// 销毁时间
/// </summary>
private float time = 0.8f;
private void Update()
{
Scroll();
}
/// <summary>
/// 冒泡效果
/// </summary>
private void Scroll()
{
//字体滚动
this.transform.Translate(Vector3.up * speed * Time.deltaTime);
timer += Time.deltaTime;
//字体缩小
this.GetComponent<Text>().fontSize--;
//字体渐变透明
this.GetComponent<Text>().color = new Color(1,0,0,1 - timer);
Destroy(gameObject,time);
}
}
在Canvas上新建一个脚本HudText,代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 控制伤害效果的生成,附在Canvas上
/// </summary>
public class HudText : MonoBehaviour
{
/// <summary>
/// 文字预制体
/// </summary>
public GameObject hudText;
private void Update()
{
Rotation();
}
/// <summary>
/// 生成伤害文字
/// </summary>
public void HUD(int damage)
{
GameObject hud = Instantiate(hudText, transform)as GameObject;
hud.GetComponent<Text>().text = "-" + damage.ToString();
}
/// <summary>
/// 画布始终朝向摄像机
/// </summary>
void Rotation()
{
this.transform.LookAt(Camera.main.transform);
}
}
使用方法
1、把HUD脚本添加到文字预制体上
2、把HudText脚本添加到Canvas上,文字预制体拖到脚本中的Hud Text字段
3、调用Hud Text脚本的HUD方法,参数为伤害数值
---------------------
【转载,仅作分享,侵删】
作者:吾亦烦
原文:https://blog.csdn.net/Dawson_Ho/article/details/86835776
版权声明:本文为博主原创文章,转载请附上博文链接!
|
|