今天就为大家讲解一下Unity3D 使用 NGUI 制作血条以及血条深度显示实现

在开发 3D 游戏过程中,经常需要在角色模型上面显示角色名称或者角色血量,如果单纯只是显示名称,我们选择 TextMesh 就已经足够了(查看详情),但是如果还要显示角色的血量,我们就需要借助 GUI 了,这次我们使用 NGUI 来制作血条,并附加在移动的角色上,同时还需要根据角度离摄像机的远近正确显示血条的远近顺序。

搭建测试场景,如图:


新建一个 C# 脚本,取名:RoleItem,代码如下:

using UnityEngine;
using System.Collections;
 
public class RoleItem : MonoBehaviour
{
    public UILabel txtName;
    public UISprite bar;
    public UILabel txtBlood;
 
    /// <summary>
    /// 血条宽
    /// </summary>
    public float itemWidth;
 
    /// <summary>
    /// 血条高
    /// </summary>
    public float itemHeight;
 
    private UIPanel uiPanel;
 
    void Awake()
    {
        this.uiPanel = this.GetComponentInParent<UIPanel> ();
    }
 
    /// <summary>
    /// 更新血条深度
    /// </summary>
    /// <param name=\"depth\">Depth.</param>
    public void ChangeDepth(int depth)
    {
        this.uiPanel.depth = depth;
    }
}


把 RoleMoveItem 挂载到角色对象上面,并且设置好属性,如图:



运行游戏,可以看到血条可以正确随着角色移动,然后我们添加多个对象,再观察结果,血条依然正确显示,并且正确显示了景深的效果,如图: