目錄
-
- 途徑
- 參數的類型
- 參數的值
- 案例代碼
途徑
途徑(一)把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("按“Enter鍵”前,實時輸入的内容:" + str);
}
);
myInputField.onEndEdit.AddListener(
(string str) =>
{
Debug.Log("按“Enter鍵”後,最終的文字是:" + str);
}
);
#endregion
#region 途徑(2)——方法索引+具體的方法
//myInputField.onValueChanged.AddListener(Func5);
//myInputField.onEndEdit.AddListener(Func6);
}
//public void Func5(string str)
//{
// Debug.Log("按“Enter鍵”前,實時輸入的内容:" + str);
//}
//public void Func6(string str)
//{
// Debug.Log("按“Enter鍵”後,最終的文字是:" + str);
//}
#endregion
}