溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Unity怎么給物體動態添加事件

發布時間:2021-04-12 15:46:37 來源:億速云 閱讀:491 作者:Leah 欄目:開發技術

這篇文章給大家介紹使用Unity怎么給物體動態添加事件,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

using System.Events;
using System.EventSystems;
//_go is the gameobject which need add event
//_go 是物體,因為EventTrigger是unity中的一個組件,我們要用添加組件的方式來給物體添加事件觸發組件
//_type is the EventTriggerType(point , drag , clickdown......
//_type 是要添加的事件觸發類型,這是一個內置枚舉
//_action is the funtion
//_action 這里之前寫的時候可能是沒有注意就寫上了funtion了,其實這應該是一個委托一個UnityAction類型的委托
void AddTriggerEvent (GameObject _go , EventTriggrtType _type , UnityAction<BaseEventData> _action)
{
        // 查看是否已經有這個組件
        EventTrigger trigger = _go.GetComponent<EventTrigger>();
        // 如果沒有就添加組件
        if (trigger == null)
        {
            trigger = _go.AddComponent<EventTrigger>();
        }
        //2021年2月20日更新
        //沒有必要加這句話,因為你使用的只是一個引用,并不是屬性
        //if (trigger.triggers.Count==0)
        //{
        //    trigger.triggers = new List<EventTrigger.Entry>();
        //}
        //新建觸發實例
        EventTrigger.Entry entry = new EventTrigger.Entry();
        // 之前我在項目里寫的時候是直接添加的方法,沒有用傳值的方式,所以這里寫的有些累贅
        //UnityAction<BaseEventData> callBack = new UnityAction<BaseEventData>(_action);
        
        // 修改之前累贅寫法
        //entry.callback.AddListener(callBack);
        entry.callback.AddListener(_action);
        //設置實例類型
        entry.eventID = _type;
        // 將實例添加到觸發列表中
        trigger.triggers.Add(entry);
}

1.這個事件觸發是使用的unity內置的事件觸發系統,所以在使用的時候一定要有

使用Unity怎么給物體動態添加事件

這兩個組件,就是你在場景里新建UI組件的時候自己新建的那個東西

2.如果是UI的話,可以直接添加,但如果不是UI的話,確保兩件事

1) 確保相機上有射線組件

使用Unity怎么給物體動態添加事件

這兩個組件分別對應3D物體和2D物體

2)要被檢測的組件一定要有collder組件

只有這樣才能保證eventtrigger的正確實現

補充:Unity 動態給物體添加EventTrigger事件

給掛載該腳本的物體自動添加 EventTrigger 組件:

[RequireComponent(typeof(EventTrigger))]
public class ModelComponent : MonoBehaviour
{
}

給物體動態添加 EventTrigger 的觸發事件:

private  void AddEventTriggerFun(EventTriggerType eventTriggerType, UnityEngine.Events.UnityAction<BaseEventData> unityAction)
{
      // 定義所要綁定的事件類型
      EventTrigger.Entry entry = new EventTrigger.Entry();
      // 設置事件類型
      entry.eventID = eventTriggerType;
      // 初始化回調函數
      entry.callback = new EventTrigger.TriggerEvent();
      // 定義回調函數
       UnityEngine.Events.UnityAction<BaseEventData> callBack = new UnityEngine.Events.UnityAction<BaseEventData>(unityAction);
      // 綁定回調函數
      entry.callback.AddListener(callBack);
      eventTrigger.triggers.Add(entry);
}

調用測試:

private EventTrigger eventTrigger; 
private void Start()
{
    eventTrigger = GetComponent<EventTrigger>();
    EventTest();
}
private void EventTest()
{
    AddEventTriggerFun(EventTriggerType.PointerClick, (BaseEventData baseEventData) => { ClickEvent(); });
}
private void ClickEvent()
{
   Debug.Log("點擊事件綁定成功...");
}

關于使用Unity怎么給物體動態添加事件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女