途径
途径(一)把Lambda表达式,作为事件的监听方法传入
途径(二)方法索引+具体的监听方法
参数的类型
UI | 参数类型 | |
---|---|---|
1按钮 | Button | 无 |
2滑动条 | Slider | float |
3复选框 | Toggle | bool |
4下拉框 | Dropdown | int |
5输入框 | InputField | string |
参数的值
以下参数的名字,是我自己起的,最好结合以下案例代码看
Button的监听方法,不允许有参数
Slider的value参数,
Togggle的flag参数 ,
Dropdown的intIndex参数,
InputField的str参数,
相当于已知
,可以直接用,这有点像out关键字修饰的参数(不同于普通方法参数,需传入实参)
案例代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TestUIAddListener : MonoBehaviour
{
public Button myBtn;
public Slider mySlider;
public Toggle myToggle;
public Dropdown myDropdown;
void Start()
{
#region 途径(1)——Lambda表达式
myBtn.onClick.AddListener(
()=>
{
Debug.Log("点了按钮");
}
);
mySlider.onValueChanged.AddListener(
value=>
{
Debug.Log("方法二:监听Slider滑动" + "——此时Slider的浮点值是:" + value);
}
);
myToggle.onValueChanged.AddListener(
flag =>
{
Debug.Log("方法三:监听Toggle勾选"+"——此时Toggle的布尔值是:"+flag);
}
);
myDropdown.onValueChanged.AddListener(
itemIndex =>
{
Debug.Log("方法四:监听Dropdown的Item改变" + "——此时Dropdown的Item值是:" + itemIndex);
}
);
#endregion
#region 途径(2)——方法索引+具体的方法
//myBtn.onClick.AddListener(Func1);
//mySlider.onValueChanged.AddListener(Func2);
//myToggle.onValueChanged.AddListener(Func3);
//myDropdown.onValueChanged.AddListener(Func4);
}//Start() end
//public void Func1()
//{
// Debug.Log("方法一:监听Button点击");
//}
//public void Func2(float value)
//{
// Debug.Log("方法二:监听Slider滑动"+"——此时Toggle的布尔值是:" + value);
//}
//public void Func3(bool flag)
//{
// Debug.Log("方法三:监听Toggle勾选"+"——此时Toggle的布尔值是:"+flag)
//}
//public void Func4(int itemIndex)
//{
// Debug.Log("方法四:监听Dropdown的Item改变" + "——此时Dropdown的Item值是:" + itemIndex);
//}
#endregion
} //class end
特别注意,InputField有两个Unity事件:onValueChanged(编辑进行时)和onEndEdit(编辑结束时),在其Inspector视图中可以看到这两个事件。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ListenInputField : MonoBehaviour
{
public InputField myInputField;
void Start()
{
#region 途径(1)——Lambda表达式
myInputField.onValueChanged.AddListener(
(string str) =>
{
Debug.Log("按“回车键”前,实时输入的内容:" + str);
}
);
myInputField.onEndEdit.AddListener(
(string str) =>
{
Debug.Log("按“回车键”后,最终的文字是:" + str);
}
);
#endregion
#region 途径(2)——方法索引+具体的方法
//myInputField.onValueChanged.AddListener(Func5);
//myInputField.onEndEdit.AddListener(Func6);
}
//public void Func5(string str)
//{
// Debug.Log("按“回车键”前,实时输入的内容:" + str);
//}
//public void Func6(string str)
//{
// Debug.Log("按“回车键”后,最终的文字是:" + str);
//}
#endregion
}