今天就为大家讲解一下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 挂载到角色对象上面,并且设置好属性,如图:
运行游戏,可以看到血条可以正确随着角色移动,然后我们添加多个对象,再观察结果,血条依然正确显示,并且正确显示了景深的效果,如图: