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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unity UI事件

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unity UI事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于工作需要到持續按鍵,所以了解了一下unity UI事件,本文主要轉載于http://www.cnblogs.com/zou90512/p/3995932.html?utm_source=tuicool&utm_medium=referral,并對相關問題進行解釋。

我們最常用到的就是unity的button組件,其實button組件所響應的事件為unity眾多ui事件中的PointerClick事件,unity的ui事件如下圖所示:

實現響應事件有以下三種:

(一)在相關UI控件上掛腳本,腳本繼承相關事件對應的接口,并在接口函數中完成相應方法的實現即可。

(二)在相關控件上添加EventTrigger組件,點擊AddNewEnvetType添加事件類型,即對應的UI事件,然后就可以掛載響應的方法。

(三)便是在程序實現。第一步也需要在相關控件上添加EventTrigger組件,然后添加監聽。代碼如下

void Start(){var trigger = transform.gameObject.GetComponent<EventTrigger>();if (trigger == null)trigger = transform.gameObject.AddComponent<EventTrigger>();// 實例化delegatestrigger.triggers = new List<EventTrigger.Entry>();// 定義需要綁定的事件類型。并設置回調函數EventTrigger.Entry entry = new EventTrigger.Entry();// 設置 事件類型entry.eventID = EventTriggerType.PointerClick;// 設置回調函數entry.callback = new EventTrigger.TriggerEvent();UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(OnScriptControll);entry.callback.AddListener(callback);// 添加事件觸發記錄到GameObject的事件觸發組件 trigger.triggers.Add(entry);}

在此理解一下此段代碼:我們要添加一個我們想要的事件,就需要對EventTrigger添加內容,添加的內容有兩個,一個為事件類型,一個為對應事件實現的函數,或者說方法。

EventTrigger通過Entry類打包了這兩個內容,eventID綁定事假類型,callback綁定事件對應的方法。通過unityaction定義相關委托以及綁定的方法,通過添加監聽AddListener來實現。

?

由于在眾多圖片或者text上實現點擊事件是則需要每一個都添加點擊事件,比較麻煩,借鑒別人的EventListener來

using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events;public class UGUIEventListener : EventTrigger {public UnityAction<GameObject> onClick;//可以重載EventTrigger的其他虛方法來實現點擊拖動等事件public override void OnPointerClick(PointerEventData eventData){base.OnPointerClick(eventData);if(onClick != null){onClick(gameObject);}}public static UGUIEventListener Get(GameObject go){UGUIEventListener listener = go.GetComponent<UGUIEventListener>();if (!listener)listener = go.AddComponent<UGUIEventListener>();return listener;} }

給text和image添加事件

using UnityEngine; using UnityEngine.UI;public class UGUIButtonClick : MonoBehaviour {public Text textTitle;public Image imageTitle;private void Awake(){UGUIEventListener.Get(textTitle.gameObject).onClick = OnClick;UGUIEventListener.Get(imageTitle.gameObject).onClick = OnClick;}void OnClick(GameObject go){if(go == textTitle.gameObject){Debug.Log("Text clicked");}else if(go == imageTitle.gameObject){Debug.Log("Image clicked");}} }

?

?

PS:三維物體實現上述點擊事件需要在Main Camera上掛載physics raycaster組件,然后在三維物體上掛載EventTrigger就可以實現相關方法方法

?

轉載于:https://www.cnblogs.com/llstart-new0201/p/7102868.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的unity UI事件的全部內容,希望文章能夠幫你解決所遇到的問題。

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