ugui 新增事件的幾種方式
Unity3D的uGUI系統的將UI可能觸發的事件分為12個型別,即EventTriggerType列舉的12個值。如下圖所示:
先以PointerClick為例。這個是用於某點點選事件。其他事件都可以根據相同的辦法呼叫。
之所以使用PointerClick為例。是因為在最後筆者會提到一個特殊的實現方式。而相比於其他事件型別,有且僅有Click事件存在特殊實現。
我們要實現事件主要有3種方式:
方式一:繼承基礎介面實現
步驟一:建立ClickObject指令碼。繼承MonoBehaviour和IPointerClickHandler。
步驟二:實現public void OnPointerClick(PointerEventData eventData)方法:
步驟三:建立一個名為Panel_IPointer的空物件。並且將ClickObject指令碼附加到物件上。
步驟四:啟動,並點選Panel_IPointer物件。在Console輸出如下:
方式二:Unity3D編輯器操作設定實現
步驟一:建立一個C#指令碼。在指令碼中新增一個public方法。
步驟二:建立一個命名為Empty的UI物件,用於接收和響應點選事件。建立一個名為Panel的UI物件,用於觸發點選事件。
步驟三:Panel物件新增EventTrigger元件," Add New" -> 選擇" PointerClick"。將Empty物件拖拽到觸發者位置。然後點選"No Function"選擇我們寫在Test指令碼中的OnTestClick事件。
步驟四:設定好這些之後。我們的事件觸發就已經完成了。執行Unity3D。點選視窗中Panel物件。Console輸出內容如下:
方式三:程式動態設定實現
我們在日常的開發中。可能需要動態的需要變更繫結的事件。那麼我們如何才能使用C#程式碼控制繫結觸發事件呢?
下面我們就介紹程式碼控制。ScriptControl.cs指令碼
1 using System.Collections.Generic; 2 using UnityEngine; 3 using UnityEngine.Events; 4 using UnityEngine.EventSystems; 5 6 public class ScriptControl : MonoBehaviour { 7 8 // Use this for initialization 9 void Start () 10 { 11 var trigger = transform.gameObject.GetComponent<EventTrigger>(); 12 if (trigger == null) 13 trigger = transform.gameObject.AddComponent<EventTrigger>(); 14 15 // 例項化delegates 16 trigger.delegates = new List<EventTrigger.Entry>(); 17 18 // 定義需要繫結的事件型別。並設定回撥函式 19 EventTrigger.Entry entry = new EventTrigger.Entry(); 20 // 設定 事件型別 21 entry.eventID = EventTriggerType.PointerClick; 22 // 設定回撥函式 23 entry.callback = new EventTrigger.TriggerEvent(); 24 UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(OnScriptControll); 25 entry.callback.AddListener(callback); 26 // 新增事件觸發記錄到GameObject的事件觸發元件 27 trigger.delegates.Add(entry); 28 } 29 30 // Update is called once per frame 31 void Update () { 32 33 } 34 35 public void OnScriptControll(BaseEventData arg0) 36 { 37 Debug.Log("Test Click"); 38 } 39 40 }
點選事件的特殊實現方式:使用Button控制元件實現
針對Click事件還存在一種特殊方式:uGUI系統中官方提供了一種Button控制元件。Button封裝了官方提供的一套OnClick事件。操作完全類似於方式二。便不詳述了。
使用Button我們可以實現動態的變更滑鼠繫結的點選事件。如下程式碼所示:
1 using UnityEngine; 2 using System.Collections; 3 using UnityEngine.UI; 4 5 public class BtnControl : MonoBehaviour { 6 7 // Use this for initialization 8 void Start () 9 { 10 var button = transform.gameObject.GetComponent<Button>(); 11 if (button != null) 12 { 13 button.onClick.RemoveAllListeners(); 14 button.onClick.AddListener(TestClick); 15 } 16 } 17 18 public void TestClick() 19 { 20 Debug.Log("Test Click. This is Type 4"); 21 } 22 23 // Update is called once per frame 24 void Update () { 25 26 } 27 }
相關推薦
ugui 新增事件的幾種方式
Unity3D的uGUI系統的將UI可能觸發的事件分為12個型別,即EventTriggerType列舉的12個值。如下圖所示: 先以PointerClick為例。這個是用於某點點選事件。其他事件都可以根據相同的辦法呼叫。 之所以使用Pointer
Java添加事件的幾種方式(轉載了codebrother的文章)
content ner over ets etc nts private out tde /** * Java事件監聽處理——自身類實現ActionListener接口,作為事件監聽器 * * @author codebrother */ class Even
cocos2dx-lua捕獲用戶touch事件的幾種方式
listener 創建 父節點 wall AC gets 多點 coord swa 1.為每個關心的事件註冊回調函數 具體分為以下幾種 1>單點觸摸 註冊函數為 cc.Handler.EVENT_TOUCH_BEGAN = 40 cc.Handl
(轉)Intellij IDEA 新增jar包的幾種方式
Intellij IDEA 新增jar包的幾種方式 轉載:https://blog.csdn.net/zwj1030711290/article/details/56678353/ 參考: 二.通過Modules的Dependencies新增:(推薦) 1.開啟 File -> P
Android RecyclerView點選事件實現的幾種方式
因為經常會用到RecyclerView,今天在這裡總結一下實現RecyclerView點選事件的實現方法 一、通過介面回撥的方式實現 1. 首先定義一個點選的介面(Recyclerview自身不帶有點選事件的回撥) public interface OnRec
Android按鈕實現點選事件的幾種方式
此方法整體看上去簡單易懂,個人比較常用 xml佈局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.
python學習之網站的編寫(HTML,CSS,JS)(二十一)----------事件(例如點選事件等)及繫結事件的幾種方式
事件:什麼叫做事件呢,就是我們在頁面中的一些滑鼠和鍵盤操作,比如onclick就是點選事件,然後我們將介紹幾種繫結事件的方式。 1.在標籤中繫結 <div onclick="fuc()"></div> <script> fun
程式碼筆記:wordpress後臺新增選單的幾種方式比較
在日常的主題及外掛開發中,嚐嚐需要將外掛/主題的想要選單放在wordpress後臺對應的位置,比如:使用者管理外掛的管理選單放在“使用者”選單下會比較方便,具體怎麼實現的呢? 後臺增加主選單 add_menu_pageadd_menu_page( $page_title
js事件繫結的幾種方式與on()、bind()的區別
一直不是很理解幾種js事件繫結之間的區別與聯絡,今天百度了一下,在此做一總結: 1.如果只是簡單的繫結一個事件,可以直接寫在行內,點選執行一個函式,例如 <button onclick="alert('點我啊!')">點我啊</button> 2.也
Linux伺服器之Redhat新增靜態路由的幾種方式
1.使用route命令,檢視本機路由直接輸入route回車即可。 route 命令 引數:add 增加路由 del 刪除路由 -net 設定到某個網段的路由 -host 設定到某臺主機的路由 gw 出口閘道器 IP地址 dev 出
事件繫結的幾種方式及區別
1.事件繫結分三種常用的方法: (1)在DOM元素中直接繫結 (2)在js程式碼中繫結; (3)繫結事件監聽函式 DOM元素中直接繫結: <input type='button' onclick='fn()'>
用js給div繫結事件,實現點選切換效果的幾種方式總結
用js給div繫結事件,實現點選切換效果,總結有如下幾種方式 script type="text/javascript"> function btnAction() { var titleNValue = document.getElementBy
Android Studio 新增依賴的幾種方式
1、庫依賴(library) 2、模組依賴(module) 以上兩種又可以分為內部和外部 a、內部庫 在工程的lib下直接貼上jar、aar檔案,androidstudio會自動載入指定目錄下的依賴庫。 即粘貼後,右鍵add as library。build.g
js事件繫結的幾種方式
原文地址:https://www.cnblogs.com/javawebstudy/p/5266168.html 要想讓 JavaScript 對使用者的操作作出響應,首先要對 DOM 元素繫結事件處理函式。所謂事件處理函式,就是處理使用者操作的函式,不同的操作對應不同的名
Winform窗體傳值的幾種方式(屬性賦值,委託,事件)
百度雲盤程式碼下載:http://pan.baidu.com/share/link?shareid=388120&uk=3627406265 窗體設計: 父窗體: 子窗體: 方法一: 1、子窗體設定一個父窗體MainFrm屬性: public MainFrm MainFrm { g
React事件繫結的幾種方式對比
React事件繫結由於類的方法預設不會繫結this,因此在呼叫的時候如果忘記繫結,this的值將會是undefined。通常如果不是直接呼叫,應該為方法繫結this。繫結方式有以下幾種:1. 在建構函式中使用bind繫結thisclass Button extends Rea
Fastjson解析多級泛型的幾種方式—新增使用class檔案來解析多級泛型
Fastjson解析多級泛型 前言 現在網上大多數是使用TypeReference 方式來解析JSON資料,這裡我提供另外一種方式來解析,使用類檔案進行解析,兩種方式我都會給出實際程式碼 例項 TypeReference方式 @
React事件方法、React定義方法的幾種方式、獲取數據、改變數據、執行方法傳值
rom super 數據 spa 箭頭 tor 重要 定義 render 1、案例實現代碼如下 import React, { Component } from ‘react‘; /** * 特別註意this,對於傳值和綁定都十分重要 */ class Home4
Eclipse安裝svn插件的幾種方式 轉帖....
如果 version name feature help sin 鏈接 exe 文件 Eclipse安裝svn插件的幾種方式 1.在線安裝: (1).點擊 Help --> Install New Software... (2).在彈出的窗口中點擊add按鈕,輸
解決瀏覽器跨域的幾種方式
doc cor 求和 對象 跨域 http onf 從服務器 console 1、什麽是跨域問題 在頁面中使用js訪問其他網站的數據時,就會出現跨域問題,比如在網站中使用ajax請求其他網站的天氣、快遞或者其他數據接口時,以及hybrid app中請求數據,