Unity 伤害数字显示HUD Unity实现游戏伤害数字显示HUD的方法
小紫苏xw 人气:0想了解Unity实现游戏伤害数字显示HUD的方法的相关内容吗,小紫苏xw在本文为您仔细讲解Unity 伤害数字显示HUD的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:unity,显示数字伤害,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); } } }
加载全部内容