Unity3D之UGUI學習筆記(三):EventSystem


在UGUI中,EventSystem實現了所有關於交互方面的功能,和NGUI不一樣的地方是,我們終於可以擺脫添加Box Collider了!

下面我們來學習一下。

對於按鈕來說,直接有onClick的事件,我們可以直接在編輯器中方便的通過拖拽來實現響應函數的賦值,這點和NGUI是一樣的,如下:

代碼使用onClick方法可以看這里:http://www.cnblogs.com/hammerc/p/4343618.html

Event Trigger

Event Trigger和NGUI中的Event Trigger功能保持一致,即使添加了該組件的GameObject獲得可以支持按下、移入、移出等事件的能力,對應的NGUI的學習筆記可點這里:http://www.cnblogs.com/hammerc/p/4591933.html

我們可以給任意的對象添加Event Trigger使其擁有響應對應類型的輸入的能力,如下:

我們發現其可以支持所有類型的輸入事件:

事件響應的注冊和onClick一致就不多說了。

支持任意物體

這點和NGUI一致,Event Trigger不僅支持Canvas內的UI,也支持場景中的所有物體。

下面我們看一下如果我想點擊場景中的一個Cube該怎么辦。

創建場景

我們創建一個新的場景,同時添加一個Cube,首先我們的要響應事件的GameObject都需要一個Collider,如下:

創建Cube自帶的Collider,如果沒有碰撞器則不能響應事件,這里Is Trigger是否勾選都可以響應輸入事件。

添加Event Trigger

我們為Cube添加Event Trigger組件,同時設定好其鼠標點下時調用一個方法,如下:

腳本如下:

 1 using UnityEngine;
 2 using System.Collections;
 3 
 4 public class NewBehaviourScript1 : MonoBehaviour
 5 {
 6     public void PointDownHandler()
 7     {
 8         Debug.Log("Point Down!");
 9     }
10 }

為Camera添加處理事件的腳本

顯示的Cube要響應輸入,必須為顯示其的Camera添加響應物理世界的腳本Physice Raycastor,如下:

添加Event System

最后為場景添加一個Event System即可。

運行一下,小方塊就可以支持點擊響應了。

事件接口

UGUI為我們提供了一些接口,整理如下:

我們該如何使用這些接口呢?

示例

我們新建一個腳本並添加到Canvas中的一個Image上,腳本如下:

 1 using UnityEngine;
 2 using UnityEngine.EventSystems;
 3 
 4 public class ImageInteractive : MonoBehaviour, IPointerDownHandler
 5 {
 6     public void OnPointerDown(PointerEventData eventData)
 7     {
 8         Debug.Log(eventData.button);
 9     }
10 }

這里我們通過輸出就可以獲得點擊的按鈕是鼠標左鍵、中鍵還是右鍵了,當然PointerEventData還提供了更多的屬性來使我們獲得更多的點擊信息。

注意:這些信息是單純使用Event Trigger無法獲得的,同時,使用接口的方式不用添加Event Trigger等其他的腳本。

唯一需要注意的就是:腳本必須添加到接收事件的GameObject之上。

通過使用接口,我們可以獲得所有交互事件中更多的信息,使開發更復雜的交互變得更加輕松。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM