【Unity】UGUI實現傷害數字顯示效果

實現效果

 

1、 創建Canvas

         在模型創建一個Canvas作爲子物體,Canvas放置到模型的上方並調整到合適大小

         設置Canvas的渲染方式爲World Space

 

2、創建文字預製體

在Canvas創建一個Text文本,設置字體的大小和顏色後拖到資源文件夾作爲預製體

 

3、寫腳本控制文字的生成和動畫效果

在文字預製體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方法,參數爲傷害數值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章