关于UI的监听的研究:
自从unity更新4.6后,UGUI就出现在我们研究中,我们以前学习unity的时候都会给Button拖一个Public 的方法,这个方法就不多提了,挺简单的。那么如果不拖,怎么代码实现呢?
首先,我们制作一个Button:
给Image添加Button组件,这样一个Button按钮就做好了,给其添加一个脚本test.cs
using UnityEngine;
using System.Collections;
using UnityEngine.UI;//引入UI
public class test : MonoBehaviour {
private Button button;
void Awake() {//在Awake里获取
button = GetComponent<Button>();
}
void Start()
{ //参数赋值
button.onClick.AddListener(delegate()//监听
{
this.OnClick(gameObject);
});
}
void OnClick(GameObject btn)
{
print(btn.name);
}
运行:这样就实现了代码监听。
那么NGUI怎么做呢?
同样的方法也还是建一个Button
添加脚本test1.cs
using UnityEngine;
using System.Collections;
public class test1 : MonoBehaviour {
private UIButton button;//定义NGUI的按钮
void Awake(){
button = GetComponent<UIButton>();
}
void Start () {
EventDelegate ed3 = new EventDelegate(this, "OnClick");
button.onClick.Add(ed3);//添加监听方法
}
void OnClick() {
print(button.name);
}
运行神奇的事出现了:点击一下打印了两回。这里神奇了,正常情况是打印一次的。其实这个跟代码监听没有关系的。这个把代码拖给Button也是一样的,这里需要注意点。当然还有UIEventListener,SendMessage(),这里就不多提了。
当然了这种用法还有Slide的值也可以用这么写,这样就可以完成Slider的值来控制声音等的大小了。代码如下
EventDelegate ed3 = new EventDelegate(this, "OnClickSlider");
voiceslieder.onChange.Add(ed3);
//slider的监听方法
void OnClickSlider()
{
for (int i = 0; i < bgaudioSource.Length; i++)
{
bgaudioSource[i].volume = voiceslieder.value;
}