【Unity】UGUI实现伤害数字显示效果

【Unity】UGUI实现伤害数字显示效果_第1张图片 实现效果

 

1、 创建Canvas

         在模型创建一个Canvas作为子物体,Canvas放置到模型的上方并调整到合适大小

【Unity】UGUI实现伤害数字显示效果_第2张图片

         设置Canvas的渲染方式为World Space

【Unity】UGUI实现伤害数字显示效果_第3张图片

 

2、创建文字预制体

在Canvas创建一个Text文本,设置字体的大小和颜色后拖到资源文件夹作为预制体

【Unity】UGUI实现伤害数字显示效果_第4张图片

 

3、写脚本控制文字的生成和动画效果

在文字预制体HUD上新建一个HUD脚本,代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

/// 
/// 控制伤害显示
/// 
public class HUD : MonoBehaviour
{
    /// 
    /// 滚动速度
    /// 
    private float speed = 1.5f;

    /// 
    /// 计时器
    /// 
    private float timer = 0f;

    /// 
    /// 销毁时间
    /// 
    private float time = 0.8f;

    private void Update()
    {
        Scroll();
    }

    /// 
    /// 冒泡效果
    /// 
    private void Scroll()
    {
        //字体滚动
        this.transform.Translate(Vector3.up * speed * Time.deltaTime);
        timer += Time.deltaTime;
        //字体缩小
        this.GetComponent().fontSize--;
        //字体渐变透明
        this.GetComponent().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;

/// 
/// 控制伤害效果的生成,附在Canvas上
/// 
public class HudText : MonoBehaviour
{
    /// 
    /// 文字预制体
    /// 
    public GameObject hudText;

    private void Update()
    {
        Rotation();
    }

    /// 
    /// 生成伤害文字
    /// 
    public void HUD(int damage)
    {
        GameObject hud = Instantiate(hudText, transform)as GameObject;
        hud.GetComponent().text = "-" + damage.ToString();
    }

    /// 
    /// 画布始终朝向摄像机
    /// 
    void Rotation()
    {
        this.transform.LookAt(Camera.main.transform);
    }
}

 

使用方法

1、把HUD脚本添加到文字预制体上

2、把HudText脚本添加到Canvas上,文字预制体拖到脚本中的Hud Text字段

3、调用Hud Text脚本的HUD方法,参数为伤害数值

你可能感兴趣的:(Unity3D)