最近打算用ugui来做项目 ui,学了几天,有点小心得,过来给大家说说。也希望 打算 以后放弃 ngui 换 ugui的朋友 给予一点 快速上手方法。
首先,学习 ugui 先 学习 事件。这里有一个 类 必须注意:
using unityEngine.EventSystems;
在你 创建一个 脚本时候,必须要导入它!
有了它 ,你的 ui' 才有事件,才有 相互交流的 活力。
那么 我们下一步就是 导入接口 和实现接口。
比如我创建的 类叫 TestClickHandler
你可以 复制上面的 接口,也可以自己 拿着api一个个写。
下一步就是 对着 每一个 接口 去引入 方法。看下图
把这些 都实现了 之后,我们就可以简单的封装一下, 蛮牛网 有一个 协同开发的 帖子也有介绍,但我觉得 这么干不是很 方便,所以哥这么干!
比如 刚刚如图 实现的 方法是
哥再改一下。。。
很多朋友看到这里 ,估计都知道我要干什么了。对,我要 重写他。
我再 创建一个 脚本!并继承 上图这个类
比如
好了,这样 我们 只要 继承 TestClickHandler 这个类,我们 想用哪个 就 重写哪个 就ok了。爽吧。。
顺带再说个 技术点,ugui
射线是 射不到 它的,那么 我 这里要 交代一个 事情,也就是 事件 响应优先级 很多比射线 快!!
那么 顺序是
OnDeselect 取消选择
OnSelect 选择
OnPointerEnter 鼠标滑过
OnPointerDown 鼠标点 但不松
OnInitializePotentialDrag 点并要移
这些优先 顺序 下来 才是 轮到 射线
那么聪明的你一定会想到 单例 来 判断 优先级了,具体不多说,我建议用OnPointerDown 来 作为 事件判断优先 和射线比,因为 其他的 有些ui 不一定会 响应。
好了,说完 。
首先,学习 ugui 先 学习 事件。这里有一个 类 必须注意:
using unityEngine.EventSystems;
在你 创建一个 脚本时候,必须要导入它!
有了它 ,你的 ui' 才有事件,才有 相互交流的 活力。
那么 我们下一步就是 导入接口 和实现接口。
比如我创建的 类叫 TestClickHandler
[AppleScript]
纯文本查看
复制代码
1
2
3
|
public
class
TestClickHandler
:
MonoBehaviour
,
IPointerClickHandler
,
IPointerDownHandler
,
IPointerEnterHandler
,
IPointerExitHandler
,
IInitializePotentialDragHandler
,
IBeginDragHandler
,
IEndDragHandler
,
IDragHandler
,
IDropHandler
,
IScrollHandler
,
ISelectHandler
,
IDeselectHandler
,
IUpdateSelectedHandler
,
IMoveHandler
,
ISubmitHandler
,
ICancelHandler
|
你可以 复制上面的 接口,也可以自己 拿着api一个个写。
下一步就是 对着 每一个 接口 去引入 方法。看下图

把这些 都实现了 之后,我们就可以简单的封装一下, 蛮牛网 有一个 协同开发的 帖子也有介绍,但我觉得 这么干不是很 方便,所以哥这么干!

比如 刚刚如图 实现的 方法是
[AppleScript]
纯文本查看
复制代码
1
2
3
4
5
|
/
/
接受滚轮
public void OnScroll
(
PointerEventData eventData
)
{
/
/
print
(
" OnScroll"
)
;
}
|
哥再改一下。。。
[AppleScript]
纯文本查看
复制代码
1
2
3
4
5
|
/
/
接受滚轮
public virtual void OnScroll
(
PointerEventData eventData
)
{
/
/
print
(
" OnScroll"
)
;
}
|
很多朋友看到这里 ,估计都知道我要干什么了。对,我要 重写他。
我再 创建一个 脚本!并继承 上图这个类
比如
[AppleScript]
纯文本查看
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
|
using
UnityEngine;
using
System.Collections;
using
UnityEngine.EventSystems;
public
class
buttonClick
:
TestClickHandler
{
/
/
接受滚轮
public override void OnScroll
(
PointerEventData eventData
)
{
/
/
print
(
" OnScroll"
)
;
}
}
|
好了,这样 我们 只要 继承 TestClickHandler 这个类,我们 想用哪个 就 重写哪个 就ok了。爽吧。。
顺带再说个 技术点,ugui
射线是 射不到 它的,那么 我 这里要 交代一个 事情,也就是 事件 响应优先级 很多比射线 快!!
那么 顺序是
OnDeselect 取消选择
OnSelect 选择
OnPointerEnter 鼠标滑过
OnPointerDown 鼠标点 但不松
OnInitializePotentialDrag 点并要移
这些优先 顺序 下来 才是 轮到 射线
那么聪明的你一定会想到 单例 来 判断 优先级了,具体不多说,我建议用OnPointerDown 来 作为 事件判断优先 和射线比,因为 其他的 有些ui 不一定会 响应。
好了,说完 。