Unity 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 }
相關推薦
Unity UGUI事件系統
Unity3D的uGUI系統的將UI可能觸發的事件分為12個型別,即EventTriggerType列舉的12個值。如下圖所示: 先以PointerClick為例。這個是用於某點點選事件。其他事件都可以根據相同的辦法呼叫。 之所以使用Pointer
Unity UGUI中ScrollView的拖拽與被UGUI事件系統遮蔽的問題
最近在專案中遇到一個Scroll View相關問題,具體為:在ScrollView中,為例項化出來的toggle添加了OnValueChange的方法,會導致ScrollView的拖拽方法接收不到拖拽資訊。同時經過測試EventSystem中的onDown,onCli
Unity UGUI事件介面(EventSystems介面)
事件介面的觸發條件 using UnityEngine.EventSystems; /// <summary> /// 指標點選事件 /// *在元件可視的區域按下且擡起時指標處於區域內(按下離開區域後擡起不會觸
UGUI事件系統點選響應物件的獲取時機
public class TestInvoke : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerClickHandler, IPointerEnterHandler, IPoint
Unity UGUI按鈕動態新增點選事件
使用程式碼的方式給按鈕新增點選事件需要引入兩個名稱空間: using UnityEngine.UI; using UnityEngine.Events; 先建立一個介面,並且在介面裡放置一個按鈕: 建立一個Test指令碼,程式碼如下: using
Unity UGUI 按鈕繫結事件的 4 種方式
Unity UGUI 按鈕繫結事件的 4 種方式 UGUI 視覺化建立以及關聯事件很方便, 動態建立可以利用建立好的 Prefab 進行例項化, 只是在關聯事件上有些複雜, 本文總結了幾種給按鈕繫結事件的關聯方式. 1. 視覺化建立及事件繫結 # Step 1 : 通過 Hierarch
【Unity UGUI有趣應用 】 (三)-------------------- 揹包系統(上)之簡易單頁揹包系統及檢索功能的實現
揹包系統,無論是遊戲還是應用,都是常常見到的功能,其作用及重要性不用我多說,玩過遊戲的朋友都應該明白。 在Unity中實現一個簡易的揹包系統其實並不是太過複雜的事。本文要實現的是一個帶檢索功能的揹包系統。先看一下我們要完成的效果 。由於上傳的gif圖不能大於5M,所以錄製
Unity UGUI按鈕新增點選事件
1. 視覺化建立及事件繫結 # 1 : 通過 Hierarchy 面板建立 UI > Button. 2 : 建立一個指令碼 TestClick.cs, 定義了一個 Click 的 public 方法(一定要是public的方法). 3 : 把 指
Unity uGUI 長按事件
在Unity 4.6新增的uGUI中,可以方便地對控制元件,通過新增EventTrigger指令碼來進行新增事件。但是裡面並沒有包括長按事件,需要自己來實現長按事件。 長按事件 using UnityEngine; using UnityEngine
[UnityUI]UGUI的事件系統
官方文件連結:http://docs.unity3d.com/460/Documentation/Manual/SupportedEvents.html Supported Events The Eventsystem supports a number of events
[Unity][UGUI][UI佈局]Tooltip事件閃爍BUG解決辦法
方法1: OnPointerEnter 和 OnPointerExit 有點問題。即便是用延遲,還是 會 出現 快速 enter 和 exit事件同時馬上 發生的問題。 大概原因是 Tooltip的UI 離 觸發的UI 太近的原因。 因此 把 Tooltip 提示框
Unity UGUI 繫結事件的 4 種方式
1. 視覺化建立及事件繫結 #Step 1 : 通過 Hierarchy 面板建立 UI > Button.Step 2 : 建立一個指令碼 TestClick.cs, 定義了一個 Click 的 public 方法.Step 3 : 選中 Hierarchy 中的 B
unity UGUI按鈕繫結事件的四種方法
UGUI 視覺化建立以及關聯事件很方便, 動態建立可以利用建立好的 Prefab 進行例項化, 只是在關聯事件上有些複雜, 本文總結了幾種給按鈕繫結事件的關聯方式. 1. 視覺化建立及事件繫結 # Step 1 : 通過 Hierarchy 面板建立 UI > Bu
Unity UGUI 動態新增Button.OnClick()事件
using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.Eve
Unity事件系統EventSystem簡析
相關元件和類 EventSystem 1.負責InputModule的切換(因為現在遊戲大部分都只有一個StanaloneInputModule,所以切換這部分可以先不考慮)。 2.負責InputModule的啟用與反啟用。 3.負責Tick整個事件系統。 4.更新InputModule,處理失焦和記錄滑
Unity調用系統窗口選擇文件或文件路徑
ssi iou bool 調用 文件 number replace gas edi using UnityEngine;using System.Collections;using System;using System.Runtime.InteropServices;[S
Unity UGUI——概述、長處
mod 分享 pop num 4.6 使用 number his 推出 Unity4.6推出的新UI系統 長處:靈活、高速、可視化、效率高效果好、易於使用和擴展 $(function () {
UNITY UGUI 腳本綁定
.com ugui alt post unit ima bubuko 技術分享 info UNITY UGUI 腳本綁定
React事件系統入門
保存 組件 綁定 pos 通過 機制 兼容 target 我們 React基於虛擬DOM實現了一個合成事件層,我們所定義的事件處理器會接受到一個合成事件層對象的實例,它完全符合W3C標準,不會存在任何IE標準的兼容性問題。並且和原生的瀏覽器事件一樣擁有同樣的接口,同樣支持事
unity調用系統剪切板功能
pack 文本 nal wlan0 type ddr roi output key package com.game.utils; import android.app.Activity; import android.content.ClipData; import a