unity ugui 整体设计分析
来源:互联网 发布:中日未来关系 知乎 编辑:程序博客网 时间:2024/05/16 07:23
一、整体描述
1、unity ugui 整个架构中最主要是三个主要模块:InputModules输入模块、Raycasters射线模块、Event模块。
InputModules输入模块
1、输入模块中BaseInputModule是抽象基类,有一个Process抽象方法,如果自己去扩展的话,继承BaseInputModule去实现Process这个方法就好,目前UGUI系统中已经实现了触屏、鼠标、键盘输入等。当然目前VR比较火,自己完全可以自定义一个 去实现自己想要的输入。
2、我们在使用UGUI时场景中会有EventSystem物体上面绑定StandaloneInputModule这个类就是Unity已经实现的触摸、和键盘输入
3、输入模块将接收的数据后首先去获取自身EventSystem组件,调用RaycastAll方法此方法会通过静态公共类RaycasterManager得到所有BaseRaycaster(射线基类)通过它调用Raycast方法得到满足射线碰撞到的物体。此时输入组件模块和射线模块联系起来。通过排序然后得到第一个满足条件的对象。然后调用
ExecuteEvents.ExecuteHierarchy();方法将刚刚得到满足的对象进行检测如果当前没有IEventSystemHandler事件,就向上找父节点,直到直到然后调用ExecuteEvents.Execute()将当前的事件比如是点击、按下、抬起、滑动等,传递给包含IEventSystemHandler的对象处理。事件分发就是向上查找直到找到IEventSystemHandler
Raycasters射线模块
1、射线模块中BaseRaycaster是抽象基类,主要是从事件摄像机一般是场景的主摄像机发射射线,得到所有碰撞事件。
2、每个Canvas上都会GraphicRaycaster组件,这是Unity已经实现的射线模块。里面有些属性可以设置是否可以被射线检测到等(这里特殊说明下:这里的碰撞实际上不是真正的碰撞是计算当前坐标是否符合)
3、PhysicsRaycaster才是真正的摄像碰撞检测,它需要绑定Camera,一般适合包含在MainCamera上。适合UI中包含3D物体,进行一些事件检测。
Event模块
1、基类IEventSystemHandler,主要实接口IPointerEnterHandler,IPointerExitHandler,IBeginDragHandler等。一些常用的控件如Button等,都是现实了它的接口。
总结
1、三者是靠RaycasterManager联系起来,射线会在OnEnable中添加自己到RaycasterManager的s_Raycasters列表中,OnDisable会移出。输入事件在Process中循环获取RaycasterManager中s_Raycasters,遍历并执行调用Raycast。到此就是上面的说的得到IEventSystemHandler对象并分发事件了。
最后:加我群一块进步吧 115136489 点击支持下吧
0 0
- unity ugui 整体设计分析
- Unity UGUI开发设计及案例讲解
- Libev源码分析 -- 整体设计
- Libev源码分析 -- 整体设计
- Unity UGUI
- 【Unity&UGUI】
- Unity +HTC VIVE 虚拟现实开发— UI设计(UGUI)
- 原理分析之二:框架整体设计
- 原理分析之二:框架整体设计
- 推荐文章:Libev源码分析 -- 整体设计
- 原理分析之二:框架整体设计
- 原理分析之二:框架整体设计
- 原理分析之二:框架整体设计
- 原理分析之二:框架整体设计
- 原理分析之二:框架整体设计
- 原理分析之二:框架整体设计
- [Unity] UGUI添加删除子canvas 造成unity闪退 crash 崩溃问题分析。
- UGUI实现unity摇杆
- iOS综合练习 哈欠阅读
- 源码安装lnmp redis jenkins memcached
- 类和对象
- poj2478 Farey Sequence
- Unity导出iOS真机测试教程
- unity ugui 整体设计分析
- 【weak win】 Codeforces Round #176 (Div. 2)
- svn 自动同步到web站点目录post-commit.bat
- ZZULIOJ-【1405: Red and Black】
- 在ubuntu-12.04.3下搭建编译android4.4源代码(傻瓜式教程)-5
- jqGrid学习
- css中display属性inline,block,inline-block详解
- Tomcat发布项目的简单方式
- (开发笔记)转载:eclipse 默认jdk 的设置 eclipse.ini -vm 参数