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方法,參數爲傷害數值