手動(dòng)添加EventTrigger的事件固然方便,但是不利于以后的修改,所以用代碼添加是很有必要的色瘩。
起初使用的時(shí)候是參考了各家博主的代碼,都大致相似逸寓,就直接拿來居兆。但是當(dāng)我要在一個(gè)EventTrigger下添加多個(gè)事件的時(shí)候,代碼就冗余了竹伸,干脆封成一個(gè)方法泥栖,用起來方便,主要是不用費(fèi)心思給那些臨時(shí)變量起名字了勋篓。
代碼如下:
/// <summary>
/// 添加EventTrigger的監(jiān)聽事件
/// </summary>
/// <param name="obj">添加監(jiān)聽的對(duì)象</param>
/// <param name="eventID">添加的監(jiān)聽類型</param>
/// <param name="action">觸發(fā)方法</param>
private void AddTriggersListener(GameObject obj, EventTriggerType eventID, UnityAction<BaseEventData> action)
{
EventTrigger trigger = obj.GetComponent<EventTrigger>();
if (trigger == null)
{
trigger = obj.AddComponent<EventTrigger>();
}
if (trigger.triggers.Count == 0)
{
trigger.triggers = new List<EventTrigger.Entry>();
}
UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(action);
EventTrigger.Entry entry = new EventTrigger.Entry();
entry.eventID = eventID;
entry.callback.AddListener(callback);
trigger.triggers.Add(entry);
}
使用示例:
//播放進(jìn)度條EventTrigger監(jiān)聽
AddTriggersListener(sliderProgressBar.gameObject, EventTriggerType.PointerEnter, OnVideoPointerEnter);
AddTriggersListener(sliderProgressBar.gameObject, EventTriggerType.PointerExit, OnVideoPointerExit);
AddTriggersListener(sliderProgressBar.gameObject, EventTriggerType.PointerClick, OnVideoPointerClick);
AddTriggersListener(sliderProgressBar.gameObject, EventTriggerType.BeginDrag, OnVideoBeginDrag);
AddTriggersListener(sliderProgressBar.gameObject, EventTriggerType.EndDrag, OnVideoEndDrag);