怎么在NGUI显示3d特效

2015年01月19日 09:40 0 点赞 0 评论 更新于 2025-11-21 14:45

下面将详细介绍在NGUI中实现相关效果的流程,以创建一个血条为例。

1. 工程初始化

  • 创建一个新的工程。
  • 删除工程中的Main Camera。

2. 创建UIroot

在工程中创建UIroot,这是NGUI界面的基础组件。

3. 选择图集、字体和控件

  • 选择NGUI自带的Fantasy图集和字体。
  • 选择Progress Bar控件,点击“Add To”将其添加到场景中。

4. 配置Progress Bar

背景设置

选择背景,将颜色改为淡红色,并将Scale X设置为300。

前景设置

选择Foreground,将颜色设置为大红色,然后将foreground的ScaleX也设置为300。完成这些设置后,基本上就得到了一个血条的雏形。

5. 创建并编写C#脚本

创建脚本

创建一个名为VatilBarControl的C#脚本。

代码实现

public class VatilBarControl : MonoBehaviour {
public float MaxPower
{
get { return maxPower; }
set { maxPower = value; UpdateDisplay(power / maxPower); }
}

public float Power
{
get { return power; }
set
{
power = value;
UpdateDisplay(power / maxPower);
}
}

public UILabel lbl_text;
public bool DisplayText { get; set; }

private UISlider _powSlider;
private float power = 0;
private float maxPower = 0;
private float _maxWidth;

void Awake()
{
_powSlider = GetComponent<UISlider>();
Debug.Log(_powSlider.name);
if (_powSlider == null)
{
Debug.LogError("PowerBarBasic: powSlider is null!");
}
_maxWidth = _powSlider.foreground.localScale.x;
}

/// <summary>
/// 显示能量条
/// </summary>
/// <param name="px">百分比</param>
void UpdateDisplay(float px)
{
if (px < 0)
px = 0;
else if (px > 1)
px = 1;
_powSlider.foreground.localScale = new Vector3(_maxWidth * px, _powSlider.foreground.localScale.y, _powSlider.foreground.localScale.z);

if (DisplayText)
lbl_text.text = string.Format("{0}/{1}", power, maxPower);
else
lbl_text.text = "";
}

void Update()
{
UpdateDisplay(power / maxPower);
}

void Start()
{
Power = 90;
MaxPower = 100;
DisplayText = true;
UpdateDisplay(1.0f);
}
}

6. 绑定脚本和创建Label

将编写好的VatilBarControl脚本绑定到Progress Bar上,此时会发现脚本需要一个Label。接下来,在场景中创建一个Label。

通过以上步骤,我们就完成了在NGUI中创建一个带有数值显示功能的血条的过程。如果要在其中显示3D特效,后续还需要根据具体的特效需求进行进一步的开发和配置。