日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

UGUI_UGUI事件系统简述及使用方法总结

發布時間:2024/9/30 windows 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UGUI_UGUI事件系统简述及使用方法总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

????Unity3DuGUI系統的將UI可能觸發的事件分為12個類型,即EventTriggerType枚舉的12個值。如下圖所示:

????先以PointerClick為例。這個是用于某點點擊事件。其他事件都可以根據相同的辦法調用。

????之所以使用PointerClick為例。是因為在最后筆者會提到一個特殊的實現方式。而相比于其他事件類型,有且僅有Click事件存在特殊實現。

????我們要實現事件主要有3種方式:

????方式一:繼承基礎接口實現

????步驟一:創建ClickObject腳本。繼承MonoBehaviourIPointerClickHandler

????

????步驟二:實現public void OnPointerClick(PointerEventData eventData)方法:

????步驟三:創建一個名為Panel_IPointer的空對象。并且將ClickObject腳本附加到對象上。

????步驟四:啟動,并點擊Panel_IPointer對象。在Console輸出如下:

? ?

????方式二:Unity3D編輯器操作設置實現

????

步驟一:創建一個C#腳本。在腳本中添加一個public方法。

步驟二:創建一個命名為EmptyUI對象,用于接收和響應點擊事件。創建一個名為PanelUI對象,用于觸發點擊事件。

? ?

步驟三:Panel對象添加EventTrigger組件," Add New" -> 選擇" PointerClick"。將Empty對象拖拽到觸發者位置。然后點擊"No Function"選擇我們寫在Test腳本中的OnTestClick事件。

? ?

????步驟四:設置好這些之后。我們的事件觸發就已經完成了。運行Unity3D。點擊窗口中Panel對象。Console輸出內容如下:

????方式三:程序動態設置實現

????我們在日常的開發中。可能需要動態的需要變更綁定的事件。那么我們如何才能使用C#代碼控制綁定觸發事件呢?

????下面我們就介紹代碼控制。ScriptControl.cs腳本

1using System.Collections.Generic;

2using UnityEngine;

3using UnityEngine.Events;

4using UnityEngine.EventSystems;

5

6publicclass ScriptControl : MonoBehaviour {

7

8// Use this for initialization

9void Start ()

10 {

11var trigger = transform.gameObject.GetComponent<EventTrigger>();

12if (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

31void Update () {

32

33 }

34

35publicvoid OnScriptControll(BaseEventData arg0)

36 {

37 Debug.Log("Test Click");

38 }

39

40 }

????點擊事件的特殊實現方式:使用Button控件實現

????

????針對Click事件還存在一種特殊方式:uGUI系統中官方提供了一種Button控件。Button封裝了官方提供的一套OnClick事件。操作完全類似于方式二。便不詳述了。

???? ?

????使用Button我們可以實現動態的變更鼠標綁定的點擊事件。如下代碼所示:

1using UnityEngine;

2using System.Collections;

3using UnityEngine.UI;

4

5publicclass BtnControl : MonoBehaviour {

6

7// Use this for initialization

8void Start ()

9 {

10var button = transform.gameObject.GetComponent<Button>();

11if (button != null)

12 {

13 button.onClick.RemoveAllListeners();

14 button.onClick.AddListener(TestClick);

15 }

16 }

17

18publicvoid TestClick()

19 {

20 Debug.Log("Test Click. This is Type 4");

21 }

22

23// Update is called once per frame

24void Update () {

25

26 }

27 }

?

?

?

總結

以上是生活随笔為你收集整理的UGUI_UGUI事件系统简述及使用方法总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。