首页 > 代码库 > NGUI-UISlider

NGUI-UISlider

UISlider其实就是一个滚动条。

下面包含三部分:

1.Background,顾名思义就是滚动条的背景。

2.Foreground,也算前景吧,就是滚动条(血条效果),血满时的效果图片。如果你设置了这个却看不到这个图,可能时自身的x值太小,设置一下Scale的x值即可。

3.Thumb,这个坑爹的东西,让我看了半小时,说白了就相当于,游标卡尺上的游标,也就是一个按钮效果,你拖拽着它,就能改变大小。我做血条效果,就把它删了。

关键说一下Foreground这个时血条血量的体现,看一下属性:


看SpriteType分了好几种,我做的是从左往右增加,选的是Filled类型,FillDir就是水平和垂直,我选的是水平Horizontal,还有各种变态的动画效果,自己看看吧。如果想从右往左增加,Invert Fill打勾,懂它意思了吧。最关键的Fill Amount是值。怎么获取或者改变它呢?

先获取这个滚动条

最好把绑在脚本滚动条本身,后获取UISlider组件

UISlider _powSlider = (UISlider)GetComponent<UISlider>();

如果你把脚本绑定在它的祖先身上,那麻烦一些:

	private GameObject go1;
	private UISlider uiSlider;
	// Use this for initialization
	void Start ()
	{
		go1 = GameObject.Find ("Slider");
		if (go1 != null) {
			Debug.Log ("go1 is not null");
		} else {
			Debug.Log("go1 is null");
		}

		uiSlider=(UISlider)go1.GetComponent<UISlider>();
		if (uiSlider == null) {  
			Debug.Log ("uiSlider is null!");  
		} else {
			Debug.Log ("uiSlider is not null!");
		}

	}
	
运行结果:



同样也能获得UISlider组件但是太麻烦了。关于获得组件问题,我贴一下转的内容

1.脚本挂到GameObject上,gameobject变量可以获得该脚本依附的对象,同理transform等信息也可以获得

2.在脚本中使用gameObject.transform.parent,可以获得你所依附的对象的父对象,如果再想往上一级获取,可以gameObject.transform.parent.parent

3.GetComponent<T>():获取对象中指定类型的控件(脚本)

   GetComponentInChildren<T>():获取对象的子对象中指定类型的控件,注意的是假如父对象拥有该控件,首先获取的是父对象的控件(它寻找的对象也包括父对象的)

   GetComponents<T>()、GetComponentsInChildren<T>()也是一样的,只不过是获取数组而已,也是要注意GetComponentsInChildren,寻找的对象也包括父对象的

4.GetComponentsInChildren获取的是脚本所依附的对象的所有子对象,包括子对象的子对象(GetComponentInChildren同理)

说得很明白了

http://blog.csdn.net/mr_jis/article/details/18270065

下面继续

方式一:

在start()中获取foreground的x值既为最大血量

_maxWidth=_powSlider.foreground.localScale.x;

在update()中改值

_powSlider.foreground.localScale = new Vector3(_maxWidth*px_powSlider.foreground.localScale.y_powSlider.foreground.localScale.z); 

方式二:

直接在update()中

_powSlider.sliderValue = px;



ok了 哈哈