天天看點

UGUI按鈕/滑動條/複選框/下拉框,用代碼添加監聽

目錄

    • 途徑
    • 參數的類型
    • 參數的值
    • 案例代碼

途徑

途徑(一)把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
}