Unity实现游戏伤害数字显示HUD的方法

 更新时间:2021年10月25日 10:28:43   作者:小紫苏xw  
游戏中收到伤害掉血,会有飘动的伤害数值,本文主要介绍Unity实现游戏伤害数字显示HUD的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

伤害数字显示HUD

游戏中收到伤害掉血,会有飘动的伤害数值;

可以使用OnGUI中GUI.Label来实现;

可自定义字体,颜色,大小等;

如果需要更好看的数字特效,可以手动添加;

普通字体不够好看可以使用插件FontEditor自定义;

Demo展示

HUDPopup类

飘血数字类,创建一个空物体,将这个脚本挂上去,再将这个物体拖成预制体;

public class HUDPopup : MonoBehaviour 
{
    //目标位置  
    private Vector3 mTarget;  
    //屏幕坐标  
    private Vector3 mScreen;  
    //伤害数值  
    public int Value;
    //文本宽度  
    public float ContentWidth;  
    //文本高度  
    public float ContentHeight;
    //GUI坐标  
    private Vector2 mPoint;
    //销毁时间  
    public float FreeTime = 1.5F;
    public Font font;
    public Color color;
    public int fontSize;
    public float speed;
    void Start ()
    {
        //获取目标位置  
        mTarget = transform.position;  
        //获取屏幕坐标  
        mScreen = Camera.main.WorldToScreenPoint(mTarget);  
        //将屏幕坐标转化为GUI坐标  
        mPoint = new Vector2(mScreen.x, Screen.height - mScreen.y);  
        //开启自动销毁线程  
        StartCoroutine("Free");  
    }  
  
    void Update()  
    {  
        //使文本在垂直方向山产生一个偏移  
        transform.Translate(Vector3.up * speed * Time.deltaTime);
        //重新计算坐标  
        mTarget = transform.position;  
        //获取屏幕坐标  
        mScreen = Camera.main.WorldToScreenPoint(mTarget); 
        //将屏幕坐标转化为GUI坐标  
        mPoint = new Vector2(mScreen.x, Screen.height - mScreen.y);
    }  
  
    void OnGUI()  
    {  
        //保证目标在摄像机前方  
        if(mScreen.z>0)  
        {  
           //内部使用GUI坐标进行绘制  
           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);  
    }  
}  

一些自定义属性,默认Color的透明度是0,如果出现不显示,可以看看这里;

使用时,在需要有掉血数字的物体上的脚本中实例化HUDPopup,创一个HUD预制体对象,放在该物体的子节点下某个位置(一般在怪物头顶创建一个空节点,用来当HUD的父物体);

测试类代码:

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);
        }
    }
}

到此这篇关于Unity实现游戏伤害数字显示HUD的方法的文章就介绍到这了,更多相关Unity 伤害数字显示HUD内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Parallel.For循环与普通for循环的性能比较

    Parallel.For循环与普通for循环的性能比较

    这篇文章介绍了Parallel.For循环与普通for循环的性能比较,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#开发WPF程序中的弱事件模式

    C#开发WPF程序中的弱事件模式

    这篇文章介绍了C#开发WPF程序中的弱事件模式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • c#使用xamarin编写拨打电话程序

    c#使用xamarin编写拨打电话程序

    Xamarin是一个行动App开发平台,提供跨平台开发能力,开发人员透过Xamarin开发工具与程序语言,即可开发出iOS、Android 与Windows 等平台的原生(Native) App 应用程序,不须个别使用各平台的开发工具与程序语言,
    2015-05-05
  • C#使用Socket实现本地多人聊天室

    C#使用Socket实现本地多人聊天室

    这篇文章主要为大家详细介绍了C#使用Socket实现本地多人聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C#实现DataList里面嵌套DataList的折叠菜单

    C#实现DataList里面嵌套DataList的折叠菜单

    这篇文章主要介绍了C#实现DataList里面嵌套DataList的折叠菜单,以实例形式详细分析了DataList嵌套实现折叠菜单所涉及的JavaScript、HTML与C#相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • C#使用log4net打日志

    C#使用log4net打日志

    本文主要介绍了C#使用log4net打日志,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C# WebApi 路由机制剖析

    C# WebApi 路由机制剖析

    这篇文章主要介绍了C# WebApi 路由机制剖析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • 10个C#程序员经常用到的实用代码片段

    10个C#程序员经常用到的实用代码片段

    如果你是一个C#程序员,那么本文介绍的10个C#常用代码片段一定会给你带来帮助,从底层的资源操作,到上层的UI应用,这些代码也许能给你的开发节省不少时间。以下是原文:
    2015-09-09
  • C#实现winform版飞行棋

    C#实现winform版飞行棋

    这篇文章主要为大家详细介绍了C#实现winform版飞行,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • DataGridView带图标的单元格实现代码

    DataGridView带图标的单元格实现代码

    这篇文章主要为大家详细介绍了DataGridView带图标的单元格的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08

最新评论