绑定事件响应
包含组件:按钮,滑动条,输入框,开关,滚动区域
首先我们用三个对象,button,toggle,slider来示范
绑定方式1:视图窗口拖拽
创建一个空对象创建脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestEvent : MonoBehaviour
{
public void OnButtonClick()
{
Debug.Log("button is clicked");
}
public void OnToggleChange(bool isOn)
{
Debug.Log("now toggle is " + isOn);
}
public void OnSliderValueChange(float rate)
{
Debug.Log("now slider value is " + rate);
}
}
在视图窗口拖动绑定
运行测试,发现正常输出
方式2:添加监听
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TestEvent : MonoBehaviour {
public Button btn;
public Toggle toggle;
public Slider slider;
private void Start()
{
btn.onClick.AddListener(OnButtonClick);
toggle.onValueChanged.AddListener(OnToggleChange);
slider.onValueChanged.AddListener(OnSliderValueChange);
}
public void OnButtonClick()
{
Debug.Log("button is clicked");
}
public void OnToggleChange(bool isOn)
{
Debug.Log("now toggle is " + isOn);
}
public void OnSliderValueChange(float rate)
{
Debug.Log("now slider value is " + rate);
}
}
对比:2中方法可能出现重复绑定,忘记移除等,因为没显示在界面中
1中方法当存在多个方法绑定时候,拖拽不方便。
代码绑定的缺点如何克服:
也就是委托怎么防止重复添加
所有的委托添加之前先删除然后添加
btn.onClick.RemoveListener(OnButtonClick);
btn.onClick.AddListener(OnButtonClick);