Unity UGUI学习(一)
来源:互联网 发布:新西兰 购物 知乎 编辑:程序博客网 时间:2024/06/05 09:57
上次的坦克大战已经做好了(然而还是没有找到实习……),好歹也是自己做的,先上图
哈哈,也就这样了
最近在学习UGUI做界面,现在在做个简单的RPG游戏界面,个人感觉UGUI挺好用的,虽然没学过NGUI,不清楚两者的区别,但UGUI在适应分辨率,事件触发等等方面都不错。接下来分享一些制作心得。
如何做一个弹出的顶置界面
首先新建一个Image作为蒙层,在Image下面新建需要弹出的界面,如下
蒙层(在上图是指DescritionMask)的Anchor Persets设置为充满全屏,如下
弹出这个功能可以使用Canvas Group组件实现,这个组件真的十分好用
Alpha代表UI对象的透明度,从0到1是完全透明到完全不透明,可以用于界面的隐藏/显示,可以做出渐入渐出的效果;
Interactable代表是否可以交互;
Blocks Raycasts代表是否阻挡射线;
Ignore Parent Groups代表是否无视父对象;
在DescritionMask添加Canvas Group,设置Alpha默认为0,即不显示这个界面,当然也不可以操作
这么做可以不通过SetActive(false)来隐藏界面,通过脚本来查找这个对象就很方便。
另外Blocks Raycasts不勾选,因为界面处于不显示状态。
设置一个按钮弹出界面添加点击事件,如下
void OnPress() { //设置蒙层透明度为1,即完全不透明 GetComponent<CanvasGroup>().alpha = 1; //打开蒙层阻挡点击,相当于顶置UI,点击不了其他界面 GetComponent<CanvasGroup>().blocksRaycasts = true; }
接下来是顶置
顶置的实际表现就是当点击这个界面以外的的地方这个界面就会关闭(起码我是这么认为的- -)
那么关键就在于侦测鼠标是不是点击了这个界面,这个需要用脚本实现
大家可以搜搜EventSystem事件系统,是负责UI管理的,根据想要响应的事件实现对应的接口,功能十分强大
这里实现IPointerClickHandler接口,调用事件OnPointerClick(PointerEventData data),
OnPointerClick(PointerEventData data)是当绑定了这个脚本的UI界面被点击时自动触发的,具体代码如下
void OnPointerClick(PointerEventData data) { //获取射线接触到的第一个对象的数据 RaycastResult rr = data.pointerPressRaycast; if (rr.gameObject != descUI) { //设置蒙层透明度为1,即完全透明 GetComponent<CanvasGroup>().alpha = 0; //关闭蒙层阻挡点击 GetComponent<CanvasGroup>().blocksRaycasts = false; } }
PointerEventData这个类的属性十分丰富,可以获取很多数据,给出官方文档传送门:http://docs.unity3d.com/ScriptReference/EventSystems.PointerEventData.html
把完整的脚本绑定到DescritionMask
以上需要注意三点:
1.Canvas Group组件中的Blocks Raycasts设置为true时可以阻挡鼠标点击DescritionUI背后的按钮,实现顶置,也确保鼠标如果不是点击在DescritionUI上,就是点击在DescritionMask上;
2.data.pointerPressRaycast返回的是射线第一个接触到的对象结果,但是如果DescritionUI的Image组件不勾选Raycast Target,则不会被侦测到(好像Panel也不会被侦测到);
3.实现了IPointerClickHandler接口就必须调用里面的事件,相反地,调用响应事件(例如OnPointerClick())就必须实现相应的接口,否则无效。
———————————–
通过以上步骤,一个可以弹出,可以隐藏的顶置界面就做好了,有时间再慢慢分享其他心得
长路慢慢,上下求索。
- Unity UGUI学习(一)
- Unity-UGUI框架<一>
- Unity UGUI 学习(一)——关于Canvas
- Unity-UGUI定时器(一)
- Unity UGUI个人学习纪录
- Unity UGUI图文混排源码(一)
- Unity UGUI的DrawCall优化(一)
- unity——UGUI(一)
- unity UGUI学习(以炉石传说为标准) (一) 播放开头动画
- Unity ugui学习笔记 --cavas
- Unity UGUI
- 【Unity&UGUI】
- UGUI学习 Canvas画布(一)
- Unity UGUI 原理篇 (一):Canvas 渲染模式
- Unity UGUI 原理篇 (一):Canvas 渲染模式
- UGUI的学习和使用(一)
- UGUI学习(一) :Layout Group布局使用说明
- UGUI学习笔记(一) 渲染层级
- 面试经历
- 深入分析AQS的Condition
- php静态属性和静态方法
- struts2自定义拦截器并配置拦截器使其生效
- 抽象类
- Unity UGUI学习(一)
- Uva820 Internet Bandwidth(网络流、双向EdmondsKarp)
- 39.NULL和临时变量和顺序结构
- 高质量代码的命名规则
- Android edittext 输入框 下一项 android:imeOptions="actionNext"
- Android 47个小知识
- markdown数学公式基本语法
- poj1011 | NKOJ 1423 木棍
- Java集合详解-ArrayList