欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Unity實(shí)現(xiàn)游戲傷害數(shù)字顯示HUD的方法

 更新時(shí)間:2021年10月25日 10:28:43   作者:小紫蘇xw  
游戲中收到傷害掉血,會(huì)有飄動(dòng)的傷害數(shù)值,本文主要介紹Unity實(shí)現(xiàn)游戲傷害數(shù)字顯示HUD的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

傷害數(shù)字顯示HUD

游戲中收到傷害掉血,會(huì)有飄動(dòng)的傷害數(shù)值;

可以使用OnGUI中GUI.Label來(lái)實(shí)現(xiàn);

可自定義字體,顏色,大小等;

如果需要更好看的數(shù)字特效,可以手動(dòng)添加;

普通字體不夠好看可以使用插件FontEditor自定義;

Demo展示

HUDPopup類

飄血數(shù)字類,創(chuàng)建一個(gè)空物體,將這個(gè)腳本掛上去,再將這個(gè)物體拖成預(yù)制體;

public class HUDPopup : MonoBehaviour 
{
    //目標(biāo)位置  
    private Vector3 mTarget;  
    //屏幕坐標(biāo)  
    private Vector3 mScreen;  
    //傷害數(shù)值  
    public int Value;
    //文本寬度  
    public float ContentWidth;  
    //文本高度  
    public float ContentHeight;
    //GUI坐標(biāo)  
    private Vector2 mPoint;
    //銷毀時(shí)間  
    public float FreeTime = 1.5F;
    public Font font;
    public Color color;
    public int fontSize;
    public float speed;
    void Start ()
    {
        //獲取目標(biāo)位置  
        mTarget = transform.position;  
        //獲取屏幕坐標(biāo)  
        mScreen = Camera.main.WorldToScreenPoint(mTarget);  
        //將屏幕坐標(biāo)轉(zhuǎn)化為GUI坐標(biāo)  
        mPoint = new Vector2(mScreen.x, Screen.height - mScreen.y);  
        //開(kāi)啟自動(dòng)銷毀線程  
        StartCoroutine("Free");  
    }  
  
    void Update()  
    {  
        //使文本在垂直方向山產(chǎn)生一個(gè)偏移  
        transform.Translate(Vector3.up * speed * Time.deltaTime);
        //重新計(jì)算坐標(biāo)  
        mTarget = transform.position;  
        //獲取屏幕坐標(biāo)  
        mScreen = Camera.main.WorldToScreenPoint(mTarget); 
        //將屏幕坐標(biāo)轉(zhuǎn)化為GUI坐標(biāo)  
        mPoint = new Vector2(mScreen.x, Screen.height - mScreen.y);
    }  
  
    void OnGUI()  
    {  
        //保證目標(biāo)在攝像機(jī)前方  
        if(mScreen.z>0)  
        {  
           //內(nèi)部使用GUI坐標(biāo)進(jìn)行繪制  
           GUIStyle style = new GUIStyle();
           style.fontSize = fontSize;
           style.font = font;
           style.normal.textColor = color;
           GUI.Label(new Rect(mPoint.x, mPoint.y, ContentWidth, ContentHeight), "-"+Value.ToString(),style);
        }  
    }  
  
    IEnumerator Free()  
    {  
        yield return new WaitForSeconds(FreeTime);  
        Destroy(this.gameObject);  
    }  
}  

一些自定義屬性,默認(rèn)Color的透明度是0,如果出現(xiàn)不顯示,可以看看這里;

使用時(shí),在需要有掉血數(shù)字的物體上的腳本中實(shí)例化HUDPopup,創(chuàng)一個(gè)HUD預(yù)制體對(duì)象,放在該物體的子節(jié)點(diǎn)下某個(gè)位置(一般在怪物頭頂創(chuàng)建一個(gè)空節(jié)點(diǎn),用來(lái)當(dāng)HUD的父物體);

測(cè)試類代碼:

public class Test : MonoBehaviour
{
    public GameObject popupDamage;
    public Transform hudPos;
    
    private void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            GameObject mObject = (GameObject)Instantiate(popupDamage, hudPos.position, Quaternion.identity);
            mObject.GetComponent<HUDPopup>().Value = Random.Range(20, 40);
        }
    }
}

到此這篇關(guān)于Unity實(shí)現(xiàn)游戲傷害數(shù)字顯示HUD的方法的文章就介紹到這了,更多相關(guān)Unity 傷害數(shù)字顯示HUD內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論