Unity HUD

来源:互联网 发布:网络兼职应聘 编辑:程序博客网 时间:2024/04/30 13:27


HUD (head up displaye) 用于在角色的头上显示信息, 然后信息会跟随角色, 一般用于显示角色的扣血量之类的; 用于测试也是一个非常不错的选择, 特别是在实机上测试时不能方便的看到Debug信息的时候.


下面是源代码, 一个HUD的管理类, 具体的实现用的是NGUI 和 一个HUDText的插件


using UnityEngine;using System.Collections;using System.Collections.Generic;/// <summary>/// 用于显示HUD/// </summary>public class HUD{    //原始的hudText    GameObject originalHUDText;    public static readonly HUD Instance = new HUD();    private HUD()     {        originalHUDText = GameObject.Find("HUDText");    }    //所有HUDUser    List<HUDUser> hudUsers = new List<HUDUser>();    //默认设置    float defaultStayDuration = 0.3f;    Color defaultColor = Color.white;    /// <summary>    /// 显示HUD    /// </summary>    public void Show(object text, GameObject followTarget)    {        Show(text, defaultColor, defaultStayDuration, followTarget);    }    /// <summary>    /// 显示HUD    /// </summary>    public void Show(object text, Color color, GameObject followTarget)    {        Show(text, color, defaultStayDuration, followTarget);    }    /// <summary>    /// 显示HUD    /// </summary>    public void Show(object text, Color color, float stayDuration, GameObject followTarget)    {        //没有包含就加入新的        if (IsHad(followTarget) == false)        {            hudUsers.Add(new HUDUser(originalHUDText, followTarget));        }        //显示HUD        for (int i = 0; i < hudUsers.Count; i++)        {            if (hudUsers[i].FollowTarget == followTarget)            {                hudUsers[i].Show(text, color, stayDuration);                break;            }        }    }    /// <summary>    /// 移除    /// </summary>    public void Remove(GameObject followTarget)    {        for (int i = 0; i < hudUsers.Count; i++)        {            if (hudUsers[i].FollowTarget == followTarget)            {                hudUsers[i].Destroy();                break;            }        }    }    //是否已经包含了    bool IsHad(GameObject followTarget)    {        for (int i = 0; i < hudUsers.Count; i++)        {            if (hudUsers[i].FollowTarget == followTarget)                return true;        }        return false;    }}/// <summary>/// 保存HUD的使用者/// </summary>class HUDUser{    public GameObject FollowTarget;    HUDText hudText;    public HUDUser(GameObject originalHUDText, GameObject followTarget)    {        //复制一个        GameObject copy = GameObject.Instantiate(originalHUDText) as GameObject;        copy.transform.parent = originalHUDText.transform.parent;        copy.transform.localScale = originalHUDText.transform.localScale;        this.hudText = copy.GetComponent<HUDText>();        this.hudText.enabled = true;                this.FollowTarget = followTarget;        this.hudText.GetComponent<UIFollowTarget>().target = FollowTarget.transform;    }    public void Show(object text,Color color,float stayDuration)    {        this.hudText.Add(text, color, stayDuration);    }    public void Destroy()    {        if (hudText != null && hudText.gameObject !=null)        {            GameObject.Destroy(hudText.gameObject);        }    }}


HUDText插件下载 : http://pan.baidu.com/s/1Cc5Cm


0 0