游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2335

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 6796|回复: 125

[枫叶飘零] Unity游戏开发——UnityUGUI——Button动态绑定事件

  [复制链接]  [移动端链接]
排名
1593
昨日变化

56

主题

253

帖子

1910

积分

Rank: 9Rank: 9Rank: 9

UID
6728
好友
23
蛮牛币
6618
威望
0
注册时间
2013-10-30
在线时间
724 小时
最后登录
2018-10-22

专栏作家社区QQ达人

发表于 2017-9-18 18:26:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
因为最近项目需要使用UGUI,这里也不是什么高深技术文章只是简单记录和分享一下,大神绕过误喷。

UGUI和NGUI一个作者写的所以很多东西基本类似,今天记录下UGUI动态绑定事件

UGUI支持的事件如下


Supported Events

[size=0.875em]The Eventsystem supports a number of events, and they can be customised further in user custom user written InputModules.
[size=0.875em]The events that are supported by the StandaloneInputModule and TouchInputModule are provided by interface and can be implemented on a MonoBehaviour by implementing the interface. If you have a valid EventSystem configured the events will be called at the correct time.
  • IPointerEnterHandler - OnPointerEnter - Called when a pointer enters the object
  • IPointerExitHandler - OnPointerExit - Called when a pointer exits the object
  • IPointerDownHandler - OnPointerDown - Called when a pointer is pressed on the object
  • IPointerUpHandler - OnPointerUp - Called when a pointer is released (called on the original the pressed object)
  • IPointerClickHandler - OnPointerClick - Called when a pointer is pressed and released on the same object
  • IInitializePotentialDragHandler - OnInitializePotentialDrag - Called when a drag target is found, can be used to initialise values
  • IBeginDragHandler - OnBeginDrag - Called on the drag object when dragging is about to begin
  • IDragHandler - OnDrag - Called on the drag object when a drag is happening
  • IEndDragHandler - OnEndDrag - Called on the drag object when a drag finishes
  • IDropHandler - OnDrop - Called on the object where a drag finishes
  • IScrollHandler - OnScroll - Called when a mouse wheel scrolls
  • IUpdateSelectedHandler - OnUpdateSelected - Called on the selected object each tick
  • ISelectHandler - OnSelect - Called when the object becomes the selected object
  • IDeselectHandler - OnDeselect - Called on the selected object becomes deselected
  • IMoveHandler - OnMove - Called when a move event occurs (left, right, up, down, ect)
  • ISubmitHandler - OnSubmit - Called when the submit button is pressed
  • ICancelHandler - OnCancel - Called when the cancel button is pressed

常用的是动态实现Onclick事件

[C#] 纯文本查看 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;

public class lv01 : MonoBehaviour {

    
	// Use this for initialization
	void Start () {
        Button btn = GameObject.Find("Button").GetComponent<Button>();
        btn.onClick.AddListener(delegate ()
        {
            this.GotoGameSence();
        });
    }
	
	// Update is called once per frame
	void Update () {
		
	}
    public void GotoGameSence()
    {
        print("调整");
        //pplication.LoadLevel(1);
        SceneManager.LoadScene(1);
    }}

需要注意添加好命名空间。


UGUI还支持很多事件比如鼠标经过,离开,按下等,UGUI提供了一个EventTrigger 组件

123.png

这个也可以通过代码获取到

[C#] 纯文本查看 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;

public class lv01 : MonoBehaviour {

    
	// Use this for initialization
	void Start () {
        //Button btn = GameObject.Find("Button").GetComponent<Button>();
        //btn.onClick.AddListener(delegate ()
        //{
        //    this.GotoGameSence();
        //});
        var trigger = transform.gameObject.GetComponent<EventTrigger>();
        if (trigger == null)
            trigger = transform.gameObject.AddComponent<EventTrigger>();

        trigger.triggers = new List<EventTrigger.Entry>();
        EventTrigger.Entry entry = new EventTrigger.Entry();

        //entry.eventID = EventTriggerType.PointerDown;鼠标按下
        entry.eventID = EventTriggerType.PointerEnter;//s鼠标经过
        UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(OnButtonDown);
        entry.callback.AddListener(callback);
        trigger.triggers.Add(entry);
    }
	
	// Update is called once per frame
	void Update () {
		
	}
    public void GotoGameSence()
    {
        print("调整");
        //pplication.LoadLevel(1);
        SceneManager.LoadScene(1);
    }
    public void OnButtonDown(BaseEventData arg0)
    {
        Debug.Log("down");
    }
}


点评

很不错。值得学习一下  发表于 2018-2-5 16:32
路过  发表于 2017-10-25 14:15

评分

参与人数 9鲜花 +14 收起 理由
七块丶 + 1 赞一个!
weixuxu123 + 2 很给力!
Yas1 + 1 很给力!
gzz1025928402 + 2
zzll + 2 很给力!
WangShuoww + 2 很给力!
zhujiang08 + 2 很给力!
骑着鸽子撞飞机 + 1 赞一个!
老莫 + 1 很给力!

查看全部评分


回复

使用道具 举报

排名
46139
昨日变化

0

主题

6

帖子

14

积分

Rank: 1

UID
74495
好友
0
蛮牛币
7
威望
0
注册时间
2015-2-12
在线时间
4 小时
最后登录
2018-2-7
发表于 2017-9-19 09:58:02 | 显示全部楼层
学些一下啊

回复

使用道具 举报

5熟悉之中
631/1000
排名
4843
昨日变化

1

主题

143

帖子

631

积分

Rank: 5Rank: 5

UID
224031
好友
3
蛮牛币
2038
威望
0
注册时间
2017-5-27
在线时间
203 小时
最后登录
2018-9-12
发表于 2017-9-19 11:01:46 | 显示全部楼层
感谢老师,很有帮助

回复 支持 反对

使用道具 举报

7日久生情
1850/5000
排名
1431
昨日变化

2

主题

346

帖子

1850

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
151630
好友
4
蛮牛币
2207
威望
0
注册时间
2016-6-12
在线时间
673 小时
最后登录
2018-10-22
发表于 2017-9-19 11:26:36 | 显示全部楼层
感谢老师,很有帮助

回复 支持 反对

使用道具 举报

4四处流浪
456/500
排名
7508
昨日变化

4

主题

223

帖子

456

积分

Rank: 4

UID
234982
好友
0
蛮牛币
1116
威望
0
注册时间
2017-7-30
在线时间
83 小时
最后登录
2018-9-6
发表于 2017-9-19 12:47:33 | 显示全部楼层
我的蛮牛币换英文字母的

回复 支持 反对

使用道具 举报

8常驻蛮牛
7430/10000
排名
246
昨日变化

0

主题

3863

帖子

7430

积分

Rank: 8Rank: 8

UID
3215
好友
0
蛮牛币
266
威望
0
注册时间
2013-9-4
在线时间
1633 小时
最后登录
2018-10-20
发表于 2017-9-19 13:59:36 | 显示全部楼层
dddddddddddddddddddddd

回复 支持 反对

使用道具 举报

7日久生情
1623/5000
排名
1212
昨日变化

1

主题

139

帖子

1623

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
186029
好友
1
蛮牛币
2655
威望
0
注册时间
2016-11-22
在线时间
557 小时
最后登录
2018-10-19
发表于 2017-9-19 15:28:06 | 显示全部楼层
来得蛮牛币的  谢谢楼主

回复 支持 反对

使用道具 举报

7日久生情
2390/5000
排名
888
昨日变化

0

主题

647

帖子

2390

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
1975
好友
0
蛮牛币
16
威望
0
注册时间
2013-8-14
在线时间
653 小时
最后登录
2018-10-22

VIP

发表于 2017-9-19 16:37:43 | 显示全部楼层
Button动态绑定事件

回复 支持 反对

使用道具 举报

5熟悉之中
785/1000
排名
4725
昨日变化

0

主题

335

帖子

785

积分

Rank: 5Rank: 5

UID
3796
好友
0
蛮牛币
879
威望
0
注册时间
2013-9-13
在线时间
158 小时
最后登录
2017-10-10
发表于 2017-9-19 17:13:56 | 显示全部楼层
谢谢楼主

回复

使用道具 举报

5熟悉之中
795/1000
排名
4398
昨日变化

7

主题

217

帖子

795

积分

Rank: 5Rank: 5

UID
151120
好友
8
蛮牛币
1029
威望
0
注册时间
2016-6-6
在线时间
263 小时
最后登录
2018-10-17
发表于 2017-9-19 17:22:33 | 显示全部楼层
值得收藏  棒棒的

回复 支持 反对

使用道具 举报

3偶尔光临
272/300
排名
11945
昨日变化

4

主题

75

帖子

272

积分

Rank: 3Rank: 3Rank: 3

UID
164114
好友
0
蛮牛币
171
威望
0
注册时间
2016-8-25
在线时间
109 小时
最后登录
2017-11-17
发表于 2017-9-19 17:35:27 | 显示全部楼层
emmmm,这个我最多就用来做过button响应自己写的函数,自带的函数大多看不懂..

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1349/1500
排名
2740
昨日变化

1

主题

489

帖子

1349

积分

Rank: 6Rank: 6Rank: 6

UID
220310
好友
1
蛮牛币
2304
威望
0
注册时间
2017-5-2
在线时间
359 小时
最后登录
2018-6-13
发表于 2017-9-19 18:25:37 | 显示全部楼层

回复

使用道具 举报

排名
19773
昨日变化

0

主题

12

帖子

51

积分

Rank: 2Rank: 2

UID
239445
好友
0
蛮牛币
115
威望
0
注册时间
2017-8-24
在线时间
15 小时
最后登录
2018-5-5
发表于 2017-9-19 19:31:00 | 显示全部楼层
感谢楼主分享
[发帖际遇]: 麦了个兜 发帖时在路边捡到 2 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复

使用道具 举报

3偶尔光临
211/300
排名
10606
昨日变化

0

主题

74

帖子

211

积分

Rank: 3Rank: 3Rank: 3

UID
243780
好友
0
蛮牛币
684
威望
0
注册时间
2017-9-15
在线时间
45 小时
最后登录
2018-7-12
发表于 2017-9-19 20:06:44 | 显示全部楼层
学习了!!!!!!!

回复

使用道具 举报

2初来乍到
116/150
排名
15220
昨日变化

0

主题

52

帖子

116

积分

Rank: 2Rank: 2

UID
237109
好友
1
蛮牛币
332
威望
0
注册时间
2017-8-11
在线时间
18 小时
最后登录
2018-5-17
发表于 2017-9-19 20:28:56 | 显示全部楼层
66666666666666666666666666666666666666

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表