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("按“回车键”前,实时输入的内容:" + 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
}
   
    

猜你喜欢

转载自blog.csdn.net/weixin_42935398/article/details/119137441