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

Unity中EventTrigger的幾種使用操作

 更新時間:2021年04月10日 14:18:29   作者:Recho  
這篇文章主要介紹了Unity中EventTrigger的幾種使用操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

說起EventTrigger事件觸發(fā)器,它的使用可以說是無處不在,EventTrigger繼承了很多的事件接口,這些接口對我們開發(fā)是十分有用的。

弄懂EventTrigger在以后開發(fā)游戲過程中可以說是事半功倍。

namespace UnityEngine.EventSystems
{
    [AddComponentMenu ("Event/Event Trigger")]
    public class EventTrigger : MonoBehaviour, IEventSystemHandler, IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler, IPointerClickHandler, IBeginDragHandler, IInitializePotentialDragHandler, IDragHandler, IEndDragHandler, IDropHandler, IScrollHandler, IUpdateSelectedHandler, ISelectHandler, IDeselectHandler, IMoveHandler, ISubmitHandler, ICancelHandler
    {
        //
        // Fields
        //
        [Obsolete ("Please use triggers instead (UnityUpgradable) -> triggers", true)]
        public List<EventTrigger.Entry> delegates;
        //
        // Properties
        //
        public List<EventTrigger.Entry> triggers {
            get;
            set;
        }
        //
        // Constructors
        //
        protected EventTrigger ();
        //
        // Methods
        //
        private void Execute (EventTriggerType id, BaseEventData eventData);
        public virtual void OnBeginDrag (PointerEventData eventData);
        public virtual void OnCancel (BaseEventData eventData);
        public virtual void OnDeselect (BaseEventData eventData);
        public virtual void OnDrag (PointerEventData eventData);
        public virtual void OnDrop (PointerEventData eventData);
        public virtual void OnEndDrag (PointerEventData eventData);
        public virtual void OnInitializePotentialDrag (PointerEventData eventData);
        public virtual void OnMove (AxisEventData eventData);
        public virtual void OnPointerClick (PointerEventData eventData);
        public virtual void OnPointerDown (PointerEventData eventData);
        public virtual void OnPointerEnter (PointerEventData eventData);
        public virtual void OnPointerExit (PointerEventData eventData);
        public virtual void OnPointerUp (PointerEventData eventData);
        public virtual void OnScroll (PointerEventData eventData);
        public virtual void OnSelect (BaseEventData eventData);
        public virtual void OnSubmit (BaseEventData eventData);
        public virtual void OnUpdateSelected (BaseEventData eventData);
        //
        // Nested Types
        //
        [Serializable]
        public class Entry
        {
            public EventTriggerType eventID;
            public EventTrigger.TriggerEvent callback;
            public Entry ();
        }
        [Serializable]
        public class TriggerEvent : UnityEvent<BaseEventData>
        {
            public TriggerEvent ();
        }
    }
}

這是官方的API中的類,

接下來用不同的方式來看EventTrigger的用法:

1.通過編輯器中添加

在Inspector中添加EventTrigger的componnent組件,然后點(diǎn)擊Add New Event Type按鈕添加一個基本的事件,主基本事件如下圖:

當(dāng)我們選擇一個事件的時候,就相當(dāng)于將要于此事件綁定了,例如當(dāng)我們選擇Pointer Click的時候,綁定了這個組件的物體將接受Pointer Click 事件的消息,當(dāng)我們在物體上按下鼠標(biāo)的時候,(當(dāng)然空間中的物體我們是無法通過鼠標(biāo)點(diǎn)擊的,但是當(dāng)我們可以通過射線碰撞的方法,來實(shí)現(xiàn)Pointer Enter,Pointer Exit等事件的觸發(fā))這里我們用來綁定這個EventTrigger 的是一個UI Panel 這樣便可以讓它接受我們自定義的單擊事件了

這里的1是我們之前選擇的Pointer click 事件,2處是將我們3處要執(zhí)行我們想要的觸發(fā)函數(shù)所在腳本的gameobject托入這里,然后才能選擇這個gameobject對象上的腳本來執(zhí)行,當(dāng)點(diǎn)擊了panel的時候就會觸發(fā)MyClick這個函數(shù)(這是我們自定義的函數(shù)),編輯器中的方法基本就是這樣了。

2.接下來便是如何在腳本中實(shí)現(xiàn)剛才的功能

using UnityEngine;
using System.Collections;
using System.Collections.Generic;using UnityEngine.Events;
using UnityEngine.EventSystems;
public class GameManager : MonoBehaviour {
        void Start()
        {
                UnityAction<BaseEventData> click = new UnityAction<BaseEventData> (MyClick);
                EventTrigger.Entry myclick = new EventTrigger.Entry ();
                myclick.eventID = EventTriggerType.PointerClick;
                myclick.callback.AddListener (click);
                EventTrigger trigger = gameObject.AddComponent<EventTrigger> ();
                trigger.triggers.Add (myclick);
        }
        public void MyClick(BaseEventData data)
        {
                Debug.Log ("點(diǎn)擊");
        }}

將這個腳本添加到Panel上面,然后運(yùn)行,點(diǎn)擊Panel,便打印出了“點(diǎn)擊”。

補(bǔ)充:Unity中使用EventTrigger點(diǎn)擊場景中的物體

突然發(fā)現(xiàn),原來以為做一遍以為就不會忘記的東西慢慢就忘了,看來隨著年齡的增大記憶力還是慢慢不如從前 了。那就勤動手,把一些需要的東西記下來吧。

今天使用unity的EventTrigger組件,實(shí)現(xiàn)點(diǎn)擊3D物體。

使用Unity版本:5.4

按照記憶中的方法首先添加事件:

 EventTrigger et = gameObject.GetComponent<EventTrigger>();
 if (et == null)
 {
     et = gameObject.AddComponent<EventTrigger>();
 }
 et.triggers = new List<EventTrigger.Entry>();
 EventTrigger.Entry enter = new EventTrigger.Entry();
 enter.eventID = EventTriggerType.PointerDown;
 enter.callback = new EventTrigger.TriggerEvent();
 UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(OnPointerDown);
 enter.callback.AddListener(callback);
 et.triggers.Add(enter);

然后我們在OnPointerDown方法中加一個輸出,方便測試:

    void OnPointerDown(BaseEventData data)
    {
 Debug.LogError("OnPointerDown");
    }

面板上已經(jīng)有EventSystem,然而經(jīng)過測試,點(diǎn)擊無效,測試點(diǎn)擊UI沒問題

此時才發(fā)現(xiàn)是相機(jī)上漏加Physics Raycaster腳本,添加之后,點(diǎn)擊測試正常。

看來以后還得多動手,需要的便記下來。

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

相關(guān)文章

  • C#實(shí)現(xiàn)Bitmap類型與Byte[]類型相互轉(zhuǎn)化的示例詳解

    C#實(shí)現(xiàn)Bitmap類型與Byte[]類型相互轉(zhuǎn)化的示例詳解

    在C#編程中,Bitmap類型和Byte[]類型之間的相互轉(zhuǎn)化是圖像處理和數(shù)據(jù)傳輸中常見的需求,Bitmap類型表示一個位圖圖像,而Byte[]類型則是一個字節(jié)數(shù)組,本文將詳細(xì)介紹如何在這兩種類型之間進(jìn)行相互轉(zhuǎn)化,需要的朋友可以參考下
    2024-07-07
  • C#程序啟動項的設(shè)置方法

    C#程序啟動項的設(shè)置方法

    這篇文章主要為大家詳細(xì)介紹了C#程序啟動項的設(shè)置方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • C#對INI文件進(jìn)行讀寫操作的示例代碼

    C#對INI文件進(jìn)行讀寫操作的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C#對INI文件進(jìn)行讀寫操作的相關(guān)知識,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,有需要的小伙伴可以參考一下
    2024-02-02
  • 使用C#與SQL Server數(shù)據(jù)庫進(jìn)行交互的詳細(xì)步驟

    使用C#與SQL Server數(shù)據(jù)庫進(jìn)行交互的詳細(xì)步驟

    在C#中與數(shù)據(jù)庫進(jìn)行交互,通常使用ADO.NET(ActiveX Data Objects .NET)框架,ADO.NET是.NET Framework中用于數(shù)據(jù)訪問的一組類庫,它提供了多種用于連接和操作數(shù)據(jù)庫的方法,以下是使用C#與SQL Server數(shù)據(jù)庫進(jìn)行交互的詳細(xì)步驟,需要的朋友可以參考下
    2024-08-08
  • C#實(shí)現(xiàn)獲取文件大小并進(jìn)行比較

    C#實(shí)現(xiàn)獲取文件大小并進(jìn)行比較

    這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)獲取文件大小進(jìn)行單位轉(zhuǎn)換與文件大小比較功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • 解析C#中的分部類和分部方法

    解析C#中的分部類和分部方法

    這篇文章主要介紹了C#中的分部類和分部方法,講解了類的拆分和方法的定義的拆分,需要的朋友可以參考下
    2016-01-01
  • C#中把英文字母轉(zhuǎn)換為大寫或小寫的方法

    C#中把英文字母轉(zhuǎn)換為大寫或小寫的方法

    這篇文章主要介紹了C#中把英文字母轉(zhuǎn)換為大寫或小寫的方法,在編碼中是一個比較常用的功能,需要的朋友可以參考下
    2014-08-08
  • C#使用LOCK實(shí)現(xiàn)線程同步

    C#使用LOCK實(shí)現(xiàn)線程同步

    這篇文章介紹了C#使用LOCK實(shí)現(xiàn)線程同步的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • Winform學(xué)生信息管理系統(tǒng)登陸窗體設(shè)計(1)

    Winform學(xué)生信息管理系統(tǒng)登陸窗體設(shè)計(1)

    這篇文章主要為大家詳細(xì)介紹了Winform學(xué)生信息管理系統(tǒng)登陸窗體設(shè)計思路,感興趣的小伙伴們可以參考一下
    2016-05-05
  • .NET使用C#導(dǎo)入Excel文件數(shù)據(jù)到數(shù)據(jù)庫

    .NET使用C#導(dǎo)入Excel文件數(shù)據(jù)到數(shù)據(jù)庫

    將Excel文件中的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中不僅能夠提升數(shù)據(jù)處理的效率和準(zhǔn)確性,還能極大地促進(jìn)數(shù)據(jù)分析和決策制定的過程,本文將介紹如何在.NET平臺使用C#導(dǎo)入Excel文件數(shù)據(jù)到數(shù)據(jù)庫中,需要的可以參考下
    2024-12-12

最新評論

新宁县| 突泉县| 九龙坡区| 威信县| 循化| 柳州市| 珠海市| 万宁市| 怀集县| 那坡县| 繁昌县| 和龙市| 澄江县| 昌乐县| 格尔木市| 乃东县| 禄丰县| 什邡市| 和平区| 南溪县| 逊克县| 图木舒克市| 永胜县| 凤阳县| 岳普湖县| 蓝田县| 海伦市| 洛川县| 绿春县| 南昌市| 龙州县| 辰溪县| 邢台市| 苏尼特左旗| 宁波市| 杭锦后旗| 兰州市| 永德县| 红河县| 崇阳县| 谷城县|