怎么在NGUI显示3d特效呢?下面我就来详细的说一下流程(例子)

创建一个新的工程,删除Main Camera

创建UIroot

选择NGUI自带的Fantasy 图集和字体
选择Progress Bar 控件

OK,我们点击Add To 添加到场景中


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

选择Foreground将颜色设置为大红色


好了,这样我们基本上就算是得到一个血条了,现在在将foreground的ScaleX也设置为300

创建C#脚本VatilBarControl
编写如下代码

  1. public class VatilBarControl : MonoBehaviour {  
  2.   
  3.     public float MaxPower  
  4.     {  
  5.         get { return maxPower; }  
  6.         set { maxPower = value; UpdateDisplay(power / maxPower); }  
  7.     }  
  8.   
  9.     public float Power  
  10.     {  
  11.         get { return power; }  
  12.         set  
  13.         {  
  14.             power = value;  
  15.             UpdateDisplay(power / maxPower);  
  16.         }  
  17.     }  
  18.   
  19.     public UILabel lbl_text;  
  20.   
  21.     public bool DisplayText { get; set; }  
  22.   
  23.     private UISlider _powSlider;  
  24.     private float power = 0;  
  25.     private float maxPower = 0;  
  26.     private float _maxWidth;  
  27.   
  28.   
  29.     void Awake()  
  30.     {  
  31.         _powSlider = GetComponent<UISlider>();  
  32.         Debug.Log(_powSlider.name);  
  33.         if (_powSlider == null)  
  34.         {  
  35.             Debug.LogError("PowerBarBasic: powSlider is null!");  
  36.         }  
  37.         _maxWidth = _powSlider.foreground.localScale.x;  
  38.   
  39.     }  
  40.   
  41.     /// <summary>  
  42.     /// 显示能量条  
  43.     /// </summary>  
  44.     /// <param name="px">百分比</param>  
  45.     void UpdateDisplay(float px)  
  46.     {  
  47.         if (px < 0)  
  48.             px = 0;  
  49.         else if (px > 1)  
  50.             px = 1;  
  51.         _powSlider.foreground.localScale = new Vector3(_maxWidth * px, _powSlider.foreground.localScale.y, _powSlider.foreground.localScale.z);  
  52.   
  53.         if (DisplayText)  
  54.             lbl_text.text = string.Format("{0}/{1}", power, maxPower);  
  55.         else  
  56.             lbl_text.text = "";  
  57.     }  
  58.   
  59.     void Update()  
  60.     {  
  61.         UpdateDisplay(power / maxPower);  
  62.     }  
  63.     void Start()  
  64.     {

  65. <span style="white-space:pre">  </span>Power = 90;  
  66.         MaxPower = 100;  
  67.         DisplayText = true;  
  68.         UpdateDisplay(1.0f);  
  69.     }  
  70. }  

将其绑定到Progress Bar我们会发现脚本需要一个lable下面创建一个lable