- 使用情景:
在开发过程中,遇到slider的value改变有2种情形;
一种是通过数据改变slider的value(及UI显示),这种有时候受限代码流程,出现不需要去响应slider的onvaluechange事件;
另一种是用户主动点击slider的ui,这时需要去调用onvaluechange事件,执行后续的流程。
我们就需要精准的判断用户的行为。
- 实现方式:
Slider 组件上挂载EventTrigger, 动态监听触发事件;就可以不去修改预制件的结构。
可动态挂载,详见代码
void Start(){
EventTrigger eventTrigger = _particlesSlider.gameObject.AddComponent<EventTrigger>();
EventTrigger.Entry entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.Drag;//设置监听事件类型
UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(this.OnSliderValue);
entry.callback.AddListener(callback);
eventTrigger.triggers.Add(entry);
entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.PointerClick;//设置监听事件类型
entry.callback.AddListener(callback);
eventTrigger.triggers.Add(entry);
}
public void OnSliderValue(BaseEventData baseEventData) {
Debug.LogError(this._particlesSlider.value);
}