NGUI源码及应用
通过分析源代码,深入学习NGUI的内部原理。同时分享一些NGUI在项目中实际应用的例子
coffeecato
思从深而行从简
展开
-
Unity3d中FingerGesture与NGUI的事件响应问题
引言当前项目中同时用到了NGUI与FingerGestures两个插件,对于按键的响应会有一些麻烦。如何控制事件响应的顺序?通常情况下,触发按下事件应当优先响应UI层的事件,首先想到的是调整脚本的执行顺序;然而却发现调整脚本的执行顺便并不会改变同一事件响应两次的情况,由于NGUI与FingerGestures直接由Unity.Touch获取输入事件。原创 2016-11-01 00:32:41 · 1195 阅读 · 0 评论 -
【NGUI】限制UIDargObject的拖拽区域(技能双摇杆的实现)
引言 最近在开发项目中的双摇杆功能,即利用摇杆释放指向性或者区域性的技能。之前介绍过利用NGUI开发的虚拟摇杆功能Unity3d中利用NGUI实现虚拟摇杆,本次在上文的基础上介绍一下如何限制滑块的移动区域。需求分析 在拖拽滑块的基础上,增加区域限制。拖拽到限制区域边缘时,滑块会有被拉回的动作。先看效果图 黑色区域为panel的区域,可以看到拖拽滑块基本被限制在panel区域内。如何实现原创 2017-03-10 00:43:49 · 1453 阅读 · 0 评论 -
【NGUI】头顶血条(2D与3D的实现)
前言 游戏中的头顶血条是一种常见的小功能,一般游戏会要求做2D的头顶血条,这是因为这样能保证UI的大小不变,图片和文字不会产生变形引起的其他效果;反过来,3D的头顶血条会由于透视的原因会有近大远小的效果,看起来会更真实。 实现 资源的制作上,2D血条与3D血条都一样,需要注意的是,实现3D血条时需要将场景camera的CullingMask选中血条所在的图层即可,同时将UI camera的cu原创 2017-05-20 17:25:06 · 5174 阅读 · 0 评论 -
Unity 与 NGUI 坐标转换原理
本文转自:Unity 与 NGUI 坐标转换原理本文转自http://blog.csdn.net/huutu 转载请带上 http://www.thisisgame.com.cn在游戏中最常用到坐标转换的就是制作人物头顶的血条/名字 之类的显示,Unity提供了摄像机以下API供我们使用:1、将世界坐标转换到屏幕坐标[csharp] view转载 2017-05-20 17:21:47 · 1264 阅读 · 0 评论 -
使用RenderTexture实现3D模型与UI的组合显示
引言 游戏中常见的功能如角色创建选择,NPC对话等功能中,需要3D模型与UI的组合显示,该如何实现呢? 如何实现 首先想到添加一个3D camera将3D模型画出来,利用Camera中的Target Texture属性来缓存绘制的3D形象,再设置相应的位置,旋转等属性。实现环境 利用NGUI\Examples\Scenes\Example X - Character的场景来进行实验。原创 2017-06-16 21:13:19 · 8775 阅读 · 1 评论 -
【NGUI源码剖析】深入理解NGUI的drawcall
引言上篇【NGUI源码剖析】NGUI的drawcall简单认识了NGUI中的drawcall。借着近来工作更替的间隙,本文在之前的基础上做一点深入的分析: - UIPanel工作流程图 - 如何生成drawcall - widgets的生成及作用 - drawcall的合并 UIPanel的工作流程 无论是UIDrawCall还是UIWidget的流程,都离不开UIPane原创 2017-07-10 18:33:57 · 4626 阅读 · 0 评论 -
【Unity3d基础】Unity3d中利用NGUI实现虚拟摇杆
引言最近的项目中需要开发虚拟摇杆功能,由于历史原因对于FingerGesture较为熟悉,故没有采用EasyTouch。NGUI中的UIDragObjectNGUI中有一个UIDragObject.cs组件,添加到GameObject,即可实现简单的拖拽动作。其中的Target需要设置被拖拽的对象,代码注释如下: /// /// Target object that原创 2016-11-30 23:47:15 · 6581 阅读 · 0 评论 -
【NGUI源码剖析】NGUI的drawcall
前言 在使用unity3d开发实际的项目中,性能优化一直是一项不得不考虑的重点,而其中UI的优化又是绕不过去的坎,很多看似简单的UI为何会占用大量的cpu开销?本文以NGUI这套UI的解决方案为例,从源码出发,分析影响性能的原因,看清问题的本质,对症下药。NGUI的drawcall 在Unity中,每次引擎准备数据并通知GPU的过程称为一次Draw Call。这一过程是逐个物体进行的,对于每个物原创 2017-06-03 23:12:27 · 1839 阅读 · 2 评论 -
【NGUI源码剖析】NGUI如何优化drawcall数量
引言 接上一篇文章对UIPanel的分析。定量的分析哪些因素会影响NGUI drawcall的增减。 SortWidgets FillAllDrawCalls的部分代码 if (mSortWidgets) SortWidgets(); // 对widgets进行排序 for (int i = 0; i < widgets.Count; ++i)原创 2017-06-05 23:20:54 · 2081 阅读 · 0 评论