首页 > 代码库 > 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了 哈哈