欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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組件,然后點擊Add New Event Type按鈕添加一個基本的事件,主基本事件如下圖:

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

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

2.接下來便是如何在腳本中實現(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 ("點擊");
        }}

將這個腳本添加到Panel上面,然后運行,點擊Panel,便打印出了“點擊”。

補充:Unity中使用EventTrigger點擊場景中的物體

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

今天使用unity的EventTrigger組件,實現(xià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)過測試,點擊無效,測試點擊UI沒問題

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

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

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

相關(guān)文章

  • C# 使用AE獲取feature的屬性及字段操作

    C# 使用AE獲取feature的屬性及字段操作

    這篇文章主要介紹了C# 使用AE獲取feature的屬性及字段操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • C#資源釋放方法實例分析

    C#資源釋放方法實例分析

    這篇文章主要介紹了C#資源釋放方法,結(jié)合實例詳細(xì)分析了C#資源釋放的具體方法與相關(guān)技巧,需要的朋友可以參考下
    2016-02-02
  • C#基礎(chǔ)之泛型

    C#基礎(chǔ)之泛型

    泛型是 2.0 版 C# 語言和公共語言運行庫 (CLR) 中的一個新功能。接下來通過本文給大家介紹c#基礎(chǔ)之泛型,感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • C#組件FormDragger窗體拖拽器詳解

    C#組件FormDragger窗體拖拽器詳解

    這篇文章主要為大家詳細(xì)介紹了C#組件FormDragger窗體拖拽器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • RegexOptions.IgnoreCase正則表達式替換,忽略大小寫

    RegexOptions.IgnoreCase正則表達式替換,忽略大小寫

    RegexOptions.IgnoreCase正則表達式替換,忽略大小寫,需要的朋友可以參考一下
    2013-03-03
  • C#重啟遠(yuǎn)程計算機的代碼

    C#重啟遠(yuǎn)程計算機的代碼

    C#重啟遠(yuǎn)程計算機的代碼...
    2007-04-04
  • C# 實現(xiàn)計算生辰八字

    C# 實現(xiàn)計算生辰八字

    生辰八字,簡稱八字,是指一個人出生時的干支歷日期;年月日時共四柱干支,每柱兩字,合共八個字,故稱。生辰八字在漢族民俗信仰中占有重要地位,古代漢族星相家據(jù)此推算人的命運的好壞。本文我們就來使用C#來實現(xiàn)計算生辰八字。
    2015-03-03
  • WPF使用Accord實現(xiàn)屏幕錄制功能

    WPF使用Accord實現(xiàn)屏幕錄制功能

    這篇文章主要為大家詳細(xì)介紹了WPF如何使用Accord實現(xiàn)屏幕錄制,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下
    2024-03-03
  • C#客戶端程序Visual Studio遠(yuǎn)程調(diào)試的方法詳解

    C#客戶端程序Visual Studio遠(yuǎn)程調(diào)試的方法詳解

    這篇文章主要給大家介紹了關(guān)于C#客戶端程序Visual Studio遠(yuǎn)程調(diào)試的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • C#多線程之Thread中Thread.IsAlive屬性用法分析

    C#多線程之Thread中Thread.IsAlive屬性用法分析

    這篇文章主要介紹了C#多線程之Thread中Thread.IsAlive屬性用法,實例分析了C#判斷線程可用狀態(tài)的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04

最新評論