转自雨松MOMO
继续学习,我相信大家在做NGUI开发的时候处理事件都会用到UIEventListener,那么UGUI中怎么办呢?先看UGUI的事件有那些吧。
Supported Events
The Eventsystem supports a number of events, and they can be customised further in user custom user written InputModules.
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
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
http://docs.unity3d.com/460/Documentation/Manual/SupportedEvents.html
OK 怎么样才能让UGUI监听的方式和NGUI差不多呢? 这里我给大家引一个思路,把下面代码放在你的项目里。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
using
UnityEngine
;
using
System
.
Collections
;
using
UnityEngine
.
EventSystems
;
public
class
EventTriggerListener
:
UnityEngine
.
EventSystems
.
EventTrigger
{
public
delegate
void
VoidDelegate
(
GameObject
go
)
;
public
VoidDelegate
onClick
;
public
VoidDelegate
onDown
;
public
VoidDelegate
onEnter
;
public
VoidDelegate
onExit
;
public
VoidDelegate
onUp
;
public
VoidDelegate
onSelect
;
public
VoidDelegate
onUpdateSelect
;
static
public
EventTriggerListener
Get
(
GameObject
go
)
{
EventTriggerListener
listener
=
go
.
GetComponent
<
EventTriggerListener
>
(
)
;
if
(
listener
==
null
)
listener
=
go
.
AddComponent
<
EventTriggerListener
>
(
)
;
return
listener
;
}
public
override
void
OnPointerClick
(
PointerEventData
eventData
)
{
if
(
onClick
!=
null
)
onClick
(
gameObject
)
;
}
public
override
void
OnPointerDown
(
PointerEventData
eventData
)
{
if
(
onDown
!=
null
)
onDown
(
gameObject
)
;
}
public
override
void
OnPointerEnter
(
PointerEventData
eventData
)
{
if
(
onEnter
!=
null
)
onEnter
(
gameObject
)
;
}
public
override
void
OnPointerExit
(
PointerEventData
eventData
)
{
if
(
onExit
!=
null
)
onExit
(
gameObject
)
;
}
public
override
void
OnPointerUp
(
PointerEventData
eventData
)
{
if
(
onUp
!=
null
)
onUp
(
gameObject
)
;
}
public
override
void
OnSelect
(
BaseEventData
eventData
)
{
if
(
onSelect
!=
null
)
onSelect
(
gameObject
)
;
}
public
override
void
OnUpdateSelected
(
BaseEventData
eventData
)
{
if
(
onUpdateSelect
!=
null
)
onUpdateSelect
(
gameObject
)
;
}
}
|
然后在你的界面里面写入监听按钮的代码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
using
UnityEngine
;
using
System
.
Collections
;
using
UnityEngine
.
UI
;
using
UnityEngine
.
EventSystems
;
using
UnityEngine
.
Events
;
public
class
UIMain
:
MonoBehaviour
{
Button
button
;
Image
image
;
void
Start
(
)
{
button
=
transform
.
Find
(
"Button"
)
.
GetComponent
<
Button
>
(
)
;
image
=
transform
.
Find
(
"Image"
)
.
GetComponent
<
Image
>
(
)
;
EventTriggerListener
.
Get
(
button
.
gameObject
)
.
onClick
=
OnButtonClick
;
EventTriggerListener
.
Get
(
image
.
gameObject
)
.
onClick
=
OnButtonClick
;
}
private
void
OnButtonClick
(
GameObject
go
)
{
//在这里监听按钮的点击事件
if
(
go
==
button
.
gameObject
)
{
Debug
.
Log
(
"DoSomeThings"
)
;
}
}
}
|