亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Unity 實現(xiàn)給物體動態(tài)添加事件

 更新時間:2021年04月10日 13:43:24   作者:龍蝦冖  
這篇文章主要介紹了Unity 實現(xiàn)給物體動態(tài)添加事件的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

介紹一個方法給物體動態(tài)的添加事件(點擊 拖拽等)

using System.Events;
using System.EventSystems;
//_go is the gameobject which need add event
//_go 是物體,因為EventTrigger是unity中的一個組件,我們要用添加組件的方式來給物體添加事件觸發(fā)組件
//_type is the EventTriggerType(point , drag , clickdown......
//_type 是要添加的事件觸發(fā)類型,這是一個內(nèi)置枚舉
//_action is the funtion
//_action 這里之前寫的時候可能是沒有注意就寫上了funtion了,其實這應該是一個委托一個UnityAction類型的委托
void AddTriggerEvent (GameObject _go , EventTriggrtType _type , UnityAction<BaseEventData> _action)
{
        // 查看是否已經(jīng)有這個組件
        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>();
        //}
        //新建觸發(fā)實例
        EventTrigger.Entry entry = new EventTrigger.Entry();
        // 之前我在項目里寫的時候是直接添加的方法,沒有用傳值的方式,所以這里寫的有些累贅
        //UnityAction<BaseEventData> callBack = new UnityAction<BaseEventData>(_action);
        
        // 修改之前累贅寫法
        //entry.callback.AddListener(callBack);
        entry.callback.AddListener(_action);
        //設置實例類型
        entry.eventID = _type;
        // 將實例添加到觸發(fā)列表中
        trigger.triggers.Add(entry);
}

2021年2月20日更新

看到自己之前寫的博客太過簡略,也沒有注意事項,重新編輯一下,我現(xiàn)在重新加上了注釋,對腳本進行了部分修改,然后下面講一下注意事項

1.這個事件觸發(fā)是使用的unity內(nèi)置的事件觸發(fā)系統(tǒng),所以在使用的時候一定要有

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

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

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

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

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

只有這樣才能保證eventtrigger的正確實現(xiàn)

補充:Unity 動態(tài)給物體添加EventTrigger事件

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

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

給物體動態(tài)添加 EventTrigger 的觸發(fā)事件:

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

調(diào)用測試:

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

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • C# .NET及Mono跨平臺實現(xiàn)原理解析

    C# .NET及Mono跨平臺實現(xiàn)原理解析

    這篇文章主要介紹了C# .NET及Mono、跨平臺實現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • C#實現(xiàn)操作windows系統(tǒng)服務(service)的方法

    C#實現(xiàn)操作windows系統(tǒng)服務(service)的方法

    這篇文章主要介紹了C#實現(xiàn)操作windows系統(tǒng)服務(service)的方法,可實現(xiàn)系統(tǒng)服務的啟動和停止功能,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • C#中#define后面只加一個參數(shù)的解釋

    C#中#define后面只加一個參數(shù)的解釋

    今天小編就為大家分享一篇關于C#中#define后面只加一個參數(shù)的解釋,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 字符串陣列String[]轉(zhuǎn)換為整型陣列Int[]的實例

    字符串陣列String[]轉(zhuǎn)換為整型陣列Int[]的實例

    下面小編就為大家分享一篇字符串陣列String[]轉(zhuǎn)換為整型陣列Int[]的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • C#避免回溯方法心得

    C#避免回溯方法心得

    這篇文章主要介紹了C#避免回溯方法,以實例的形式講述了回溯方法的弊端及解決處理方法,是非常實用的技巧,需要的朋友可以參考下
    2014-09-09
  • C# wpf解決Popup彈出位置異常問題解決

    C# wpf解決Popup彈出位置異常問題解決

    本文主要介紹了C# wpf解決Popup彈出位置異常問題解決,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • c#壓縮字符串的方法

    c#壓縮字符串的方法

    這篇文章主要介紹了c#壓縮字符串的方法,文中示例代碼非常詳細,供大家參考和學習,感興趣的朋友可以了解下
    2020-06-06
  • C#使用DES和AES實現(xiàn)加密解密功能示例

    C#使用DES和AES實現(xiàn)加密解密功能示例

    這篇文章主要介紹了C#使用DES和AES實現(xiàn)加密解密功能,結合具體實例形式分析了C#實現(xiàn)DES與AES的加密解密功能實現(xiàn)技巧,需要的朋友可以參考下
    2017-06-06
  • C#超市收銀系統(tǒng)設計

    C#超市收銀系統(tǒng)設計

    這篇文章主要為大家詳細介紹了C#超市收銀系統(tǒng)設計,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • C#實現(xiàn)在控制臺輸出當前系統(tǒng)時間的方法

    C#實現(xiàn)在控制臺輸出當前系統(tǒng)時間的方法

    這篇文章主要介紹了C#實現(xiàn)在控制臺輸出當前系統(tǒng)時間的方法,涉及C#時間函數(shù)DateTime.Now的使用方法,需要的朋友可以參考下
    2015-04-04

最新評論