永发信息网

unity ui为什么注册事件和删除事件

答案:1  悬赏:70  手机版
解决时间 2021-11-28 02:28
unity ui为什么注册事件和删除事件
最佳答案
这个根据情况而定的
我们要实现事件主要有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();
12 if (trigger == null)
13 trigger = transform.gameObject.AddComponent();
14
15 // 实例化delegates
16 trigger.delegates = new List();
17
18 // 定义需要绑定的事件类型。并设置回调函数
19 EventTrigger.Entry entry = new EventTrigger.Entry();
20 // 设置 事件类型
21 entry.eventID = EventTriggerType.PointerClick;
22 // 设置回调函数
23 entry.callback = new EventTrigger.TriggerEvent();
24 UnityAction callback = new UnityAction(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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
第一次买名器,给了我一包东西,不知道该怎么
货款多付给供应商了会计分录怎么做?
用日语说对不起 最好中文音译
120*40*80的草缸怎么解决灯光问题
长滩岛和宿雾选择哪里?
2931克等于多少几
西安樱喜燃气灶服务客服中心 官方维修点
简述代理的构成要件
为什么黄金戒指可以换铂金钻石戒指,而铂金钻
古代汉族发型是怎样的
求monsta x 歌曲 百度云资源
长期以来,“三公消费”中的腐败问题堪称中国
一首励志的歌,高潮是燃烧吧,什么什么炽热的
拆迁平方错钱下来了错的平方还能找回吗
白马坡解围的读后感200字
推荐资讯
女孩对你说这话,啥子意思?
如图所示,用一根与绝热活塞相连的细线将绝热
有机护肤品到底有什么好处?
如何组建联通营业厅
方城县医药公司二十六药店地址有知道的么?有
人生只顾谁无私下一句
仓鼠晚上隔一阵叫一次为什么
广西省来宾市那个学校是最好的?
我2012/9/26 9:31生了个男孩,爸爸姓
贷款五十万利息一分二厘九
韵达(市车胤大道1345号韵达)地址在什么地方,
北京Lavieen玫瑰人生品质生活民宿(北三环西路
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?