最新文章
Cocos2d-x游戏开发实例详解7:对象释放时机
03-25 13:59
Cocos2d-x游戏开发实例详解6:自动释放池
03-25 13:55
Cocos2d-x游戏开发实例详解5:神奇的自动释放
03-25 13:49
Cocos2d-x游戏开发实例详解4:游戏主循环
03-25 13:44
Cocos2d-x游戏开发实例详解3:无限滚动地图
03-25 13:37
Cocos2d-x游戏开发实例详解2:开始菜单续
03-25 13:32
怎么在NGUI显示3d特效
下面将详细介绍在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特效,后续还需要根据具体的特效需求进行进一步的开发和配置。