最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity 實(shí)現(xiàn)給物體動(dòng)態(tài)添加事件

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

介紹一個(gè)方法給物體動(dòng)態(tài)的添加事件(點(diǎn)擊 拖拽等)

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

2021年2月20日更新

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

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

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

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

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

這兩個(gè)組件分別對(duì)應(yīng)3D物體和2D物體

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

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

補(bǔ)充:Unity 動(dòng)態(tài)給物體添加EventTrigger事件

給掛載該腳本的物體自動(dòng)添加 EventTrigger 組件:

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

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

private  void AddEventTriggerFun(EventTriggerType eventTriggerType, UnityEngine.Events.UnityAction<BaseEventData> unityAction)
{
      // 定義所要綁定的事件類型
      EventTrigger.Entry entry = new EventTrigger.Entry();
      // 設(shè)置事件類型
      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("點(diǎn)擊事件綁定成功...");
}

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

相關(guān)文章

  • 利用C#/VB.NET實(shí)現(xiàn)PPT轉(zhuǎn)換為HTML

    利用C#/VB.NET實(shí)現(xiàn)PPT轉(zhuǎn)換為HTML

    利用PowerPoint可以很方便的呈現(xiàn)多媒體信息,且信息形式多媒體化,表現(xiàn)力強(qiáng)。但難免在某些情況下我們會(huì)需要將PowerPoint轉(zhuǎn)換為HTML格式,本文就為大家整理了轉(zhuǎn)換方法,希望對(duì)大家有所幫助
    2023-05-05
  • C#使用代碼實(shí)現(xiàn)春晚撲克牌魔術(shù)

    C#使用代碼實(shí)現(xiàn)春晚撲克牌魔術(shù)

    這篇文章主要為大家詳細(xì)介紹了C#如何使用代碼實(shí)現(xiàn)龍年春晚撲克牌魔術(shù)(守歲共此時(shí)),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2024-02-02
  • C#實(shí)現(xiàn)定義一套中間SQL可以跨庫執(zhí)行的SQL語句(案例詳解)

    C#實(shí)現(xiàn)定義一套中間SQL可以跨庫執(zhí)行的SQL語句(案例詳解)

    這篇文章主要介紹了C#實(shí)現(xiàn)定義一套中間SQL可以跨庫執(zhí)行的SQL語句,主要包括hisql查詢樣例、group by查詢、鏈?zhǔn)讲樵兗癶isql語句和鏈?zhǔn)讲樵兓煊玫膕ql語句,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 使用C#實(shí)現(xiàn)基于TCP和UDP協(xié)議的網(wǎng)絡(luò)通信程序的基本示例

    使用C#實(shí)現(xiàn)基于TCP和UDP協(xié)議的網(wǎng)絡(luò)通信程序的基本示例

    這篇文章主要介紹了使用C#實(shí)現(xiàn)基于TCP和UDP協(xié)議的網(wǎng)絡(luò)通信程序的示例,文中分別編寫了基本的服務(wù)器端和客戶端,代碼十分簡單,需要的朋友可以參考下
    2016-04-04
  • 區(qū)分C# 中的 Struct 和 Class

    區(qū)分C# 中的 Struct 和 Class

    這篇文章主要介紹了如何區(qū)分C# 中的 Struct 和 Class,幫助大家更好的理解和學(xué)習(xí)c#編程,感興趣的朋友可以了解下
    2020-09-09
  • C#中OpenCvSharp 通過特征點(diǎn)匹配圖片的方法

    C#中OpenCvSharp 通過特征點(diǎn)匹配圖片的方法

    這篇文章主要介紹了OpenCvSharp 通過特征點(diǎn)匹配圖片的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 簡單談?wù)凜#中深拷貝、淺拷貝

    簡單談?wù)凜#中深拷貝、淺拷貝

    深拷貝和淺拷貝都是對(duì)對(duì)象進(jìn)行的拷貝復(fù)制。而他們的不同就在于:一個(gè)對(duì)象中可能會(huì)有值類型的字段,也可能會(huì)有引用類型的字段。淺拷貝直接拷貝值、引用類型的指針。而深拷貝則是重新構(gòu)造字段指針?biāo)赶虻膶?duì)象,并沒有拷貝該字段的指針,或是與該字段指針指向同一塊內(nèi)存
    2015-06-06
  • C#基于SQLiteHelper類似SqlHelper類實(shí)現(xiàn)存取Sqlite數(shù)據(jù)庫的方法

    C#基于SQLiteHelper類似SqlHelper類實(shí)現(xiàn)存取Sqlite數(shù)據(jù)庫的方法

    這篇文章主要介紹了C#基于SQLiteHelper類似SqlHelper類實(shí)現(xiàn)存取Sqlite數(shù)據(jù)庫的方法,涉及C#操作SQLite數(shù)據(jù)庫的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C# 獲取數(shù)據(jù)庫中所有表名、列名的示例代碼

    C# 獲取數(shù)據(jù)庫中所有表名、列名的示例代碼

    這篇文章主要介紹了C# 獲取數(shù)據(jù)庫中所有表名、列名,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C#接口interface用法實(shí)例

    C#接口interface用法實(shí)例

    這篇文章主要介紹了C#接口interface用法,實(shí)例分析了C#接口的基本使用方法,需要的朋友可以參考下
    2015-06-06

最新評(píng)論

始兴县| 廊坊市| 枣阳市| 塔河县| 航空| 海林市| 昂仁县| 友谊县| 康马县| 镇坪县| 平陆县| 永嘉县| 富民县| 理塘县| 宜城市| 苍山县| 太和县| 东阿县| 晋江市| 池州市| 枣强县| 高台县| 三亚市| 梁平县| 宁津县| 长岭县| 花莲市| 日土县| 松滋市| 康平县| 西盟| 息烽县| 乐业县| 淮南市| 永和县| 麻江县| 呼玛县| 铜梁县| 界首市| 澎湖县| 义马市|