Unity引擎UI模块知识Tree

如今主流的UI解决方案是UGUI和NGUI,近年来更是以UGUI为主,本期结合UWA学堂以及Blog的相关内容整理了《Unity引擎UI模块知识Tree》,主要介绍了UGUI的优化、框架完善及解决方案,也涉及到NGUI和FairyGUI的内容,最后是UWA的工具篇,开发者们能够根据报告查看问题,优化项目。html

前期咱们也整理更新过《Unity引擎渲染模块知识Tree》《Unity引擎资源管理模块知识Tree》,深受开发者们的喜好,欢迎你们按照本身的兴趣和须要参考取阅。数组

 


UGUI

框架缓存

《UGUI深度研究之源码鉴赏》
从UI的代码底层讲起,经过理解底层代码的原理来认知上层的有效优化方法。这里会从源码中深刻分析UI网格重建的实现原理,并完成了提取触发UI重建的UI元素的代码实现,能够更方便、更准确地定位引发UI性能问题的UI元素,从而有针对性地作优化。
性能优化

《Unity手游UI框架一站式解决方案》
该课程内容很是详实、性价比极高。初级开发者能够拥有一套完整的实战UI框架源码,快速进入实战;中级及以上者能够深刻理解框架的造成过程并在此基础上进行修改,迭代出属于本身的框架;语言中并无华丽的辞藻,技术则彻底以实用、稳健为基础。
服务器

《UI框架搭建:控件定制篇》
《UI框架搭建:消息重构篇》
《UI框架搭建:应用技巧篇》
整套框架分为三节课程来说解:第一节课程主要讲解控件侧的框架搭建,第二节课程进一步讲解消息流程框架搭建,最后一节则罗列咱们在研发过程当中特别推荐的高级技巧操做。该系列课程带你从一个不一样的视角审视UI框架,并在关键的地方给予踩坑预警;底层认识UI控件背后的逻辑;在搭建框架时,教你面对不一样技术选型作出合理的取舍判断。


框架

方案编辑器

《Unity UGUI 渲染3D对象详解》
该课程是一个针对项目研发过程当中一个场景问题的解决方案。在UI界面中渲染3D物体是一个很是广泛的需求,该课程讲解的并非如何去渲染,而是讲解在UI界面中渲染3D物体一般会遇到哪些棘手的问题,它的原理是什么以及如何解决。经过该课程,你能够对UI界面中渲染3D物体的原理进行掌握,同时对于大多数研发团队中会碰到的问题和解决方案都会有一个更为全面的了解。
ide

《Unity运行时动态图集的实现》
本课程讲解了Unity 运行时经过动态图集来下降Draw Call的方法,从基本思路和实现原理切入,随后对动态图集的功能作了优化和扩展,附带Demo源码。不只包含可复用的图集,还有空间利用效率更高的不可复用图集的实现。
函数

《基于DOTS的UI解决方案》
本文介绍了DOTS UI解决方案,是比较早的对DOTS UI的介绍,基于0.3.0版本,主要是一些简单的功能实现,包括Conversion、UI Mesh Batching、 RenderSystem,并作了UGUI和DOTS UI的性能对比。
工具

《UGUI 文本多语言方案》
Unity的两套UI框架中,NGUI包含UI文本的多语言功能,而UGUI原生并不支持多语言。本文采用一套Key对应多套文本的方式,实现了游戏内动态的语言切换,简单、方便,又避免了插件的使用。原理讲解清晰,并附上了关键的代码讲解,值得一读。

《UGUI表情系统解决方案》
图文混编是表情系统的常见问题,Unity推荐的TextMesh方式能够混编,可是与UGUI难以整合、使用多个材质时还会带来动态合批的问题,做者经过研究UGUI源码和其Shader,重写了UGUI的Text生成Mesh的方法,很好地解决了图文混编的问题,本文详细讲解了这套表情系统解决方案,并附赠源码。

《Unity游戏界面解决方案: PSD For UGUI》
在游戏开发过程当中界面系统需求变化频繁,牵涉到人员最多,从项目长期各系统开发、维护所占时间统计来看,界面系统所占时间是最多的。笔者经过学习、总结,开发出这个从PSD文件直接生成Unity中Prefab资源的流程,该流程能够高保真地在Unity中复现美术设计,减小沟通,提升游戏总体研发效率。

《属性雷达图UGUI渲染器》
使用雷达图展现角色的各个属性值,是常见的UI界面,文中对方案的实现逻辑和思路作了详细的讲解并实际测评了效果。

《如何实现次时代美术效果—UGUI美术制做篇》
本视频展现了使用UGUI,现场制做自定义的材质,实现酷炫的UI表现效果的过程,并讲解了如何经过编写自定义的UI组件实现复杂的UI状态,结合动画系统来实现动感的UI效果。

 


FairyGUI+NGUI

《FairyGUI插件解析及Lua导出》
本专栏做者详细介绍了UI框架设计理念和核心内容,并经过FairyGUI的自动化逻辑,重构了UI管线,同时在插件建立和Lua脚本导出两个环节,详细地介绍了本身的工程操做、并对关键代码进行了解析,很好地解决了重度游戏开发中常见的反复率高、耗时等痛点,文末还提出了编辑器化的将来扩展思路。提升游戏工业生产力、解决开发痛点,选它!

《FairyGUI的使用技巧和优化建议》
当时做者的团队正面临Cocos2d向Unity的转型,选择了FairyGUI做为大部分图形界面设计和测试的工具,通过一年半的时间,很好地完成了过渡和不一样部门的配合。文中分享了实战中总结的7个技巧,都很实用。包括:
1)像素点击测试功能的注意点
2)动效播放TimeScale的问题
3)列表使用的优化
4)合批
5)循环虚拟列表
6)Text影响Draw Call的例子
7)滤镜影响Draw Call







该做者在学堂的另外一篇文章《Addressable系统解析及实践经验》也深受学堂用户的欢迎。

《Unity一键图集生成工具,附源码(基于NGUI和TexturePacker)》
TexturePacker GUI是NGUI中打包管理图集的经常使用工具,可是若是图集较多,就会带来不少的重复,笔者写了这套工具来实现批量图集的生成,从而提升效率。文中详细讲解了工具的制做过程,并附上了工程源码。

 


优化

《Unity引擎渲染、UI、逻辑代码模块的量化分析和优化方法》
Unity引擎的渲染、UI和逻辑脚本耗时是大多数项目的Top 3耗时模块。对此,咱们对这三个模块进行量化地统计和分析,介绍准肯定位性能瓶颈的方法。同时,从常见的性能问题入手,分析和对比各类可行的性能优化方案,以求显著地提高这些模块的效率。内容包括:

  • 渲染模块的重要参数分析以及优化方法
  • UI模块瓶颈的精肯定位和优化
  • C#/Lua瓶颈函数的优化方法

《Unity引擎移动游戏性能优化全解析》
课程是在UWA DAY 2018上的分享,当时UWA已经为超过70款移动游戏项目进行了深度优化。在针对这些项目的性能进行深度剖析时,咱们遇到了大量的“疑难杂症”。在此,咱们将这些问题进行总结和概括,经过大量实际案例,让你们可以了解和掌握如何对Unity引擎各个模块、资源和内存管理方面的性能问题进行快速的定位和精准的分析,内容主要包括:

  • 渲染、UI、加载、物理等Unity引擎各个主流模块的“疑难杂症”分析
  • 纹理、网格等主流资源的资源加载和内存管理

《Unity UI模块优化案例精讲》
对UI模块常见的性能问题进行全方位的解析,具体分析UGUI和NGUI各自的优点和性能瓶颈所在,以及提高性能的主要方式,主要包括:

  • 如何下降界面的渲染开销
  • 如何下降界面的更新开销,以及避免峰值
  • 如何高效地处理大量HUD元素等

《UGUI深度研究之优化技巧》
本课程经过讲解纹理格式、纹理通道分离、纹理尺寸设置等方面,找到移动端UI纹理资源兼具效果和性能的合理格式,以此减小纹理资源加载耗时,从而减小UI的打开耗时。此外,还包括了UI制做上的常见UI制做优化思路,帮助开发者找到UI的“正确打开方式”。为了更好地在研发后期找到瓶颈UI,这里还提供了一个UI界面的静态分析工具,能够帮助开发者更直观地分析定位“问题UI”。

随着UI迭代和研发流程的变化,在UI资源上也会遇到一些不可避免的麻烦问题,本课程也对这些问题进行了举例并给出了可参考的解决方案。经过学习,开发者能够更好地对移动端UI制做进行有条理的性能把控,提高UI界面的运行效率。

《详解UGUI Draw Call计算和Rebuild操做优化》
这是目前对UGUI Draw Call分析得最为透彻、全面的一篇文章。经过大量举例让你们直接明白为什么UI界面中的Draw Call老是居高不下,同时让你们掌握对Draw Call、UI重建、Overdraw等高频实际问题的高效优化知识。

《如何实现高效UGUI性能—UGUI性能优化篇》
本视频主要讲解了如下四方面的内容:

  • UGUI 中Draw Call的造成规则
  • Overdraw的若干优化方式
  • 经过对源码的简单修改,优化事件检测的开销
  • UI 网格重建的机制和优化方法

《如何优化UGUI的ScrollRect》
UGUI的ScrollRect在加载太多物体的时候,第一次弹出界面会很是卡顿,并且不在界面里的内容依然会参与绘制,致使毫无心义的浪费。笔者对此进行了一番研究,并将心得与你们分享。

 

《UGUI 下降填充率技巧两则》
Fill Rate(填充率)是指显卡每帧每秒可以渲染的像素数。在每帧绘制中,若是一个像素被反复绘制的次数越多,那么它占用的资源也必然更多。目前在移动设备上,FillRate的压力主要来自半透明物体。由于多数状况下,半透明物体须要开启 Alpha Blend 且关闭 ZTest和 ZWrite,同时若是咱们绘制像 alpha=0 这种实际上不会产生效果的颜色上去,也一样有 Blend 操做,这是一种极大的浪费。所以,本文为你们推荐了两则UGUI 下降填充率的技巧,但愿对你们有所帮助。

《Unity手游开发札记——使用Shader进行UGUI的优化》
UI优化是个极其繁琐且考验功底的部分。笔者整理了以前工做中基于Shader来进行优化的思路和方法,以及本身构建的、代替UGUI提供的通用控件的组件,包括小地图、Mask的使用、进度条、基于DoTween的动画效果优化等,具备极高的参考意义。

《NGUI性能优化技巧》
包含了上、下两节内容,上主要介绍了使 Widgets 对不一样的屏幕尺寸进行自适应;自定义UI材质的制做;下降渲染时的Draw Call数量;解决拾取UI与场景物体的鼠标事件冲突等,下主要介绍了UI Panel 开销原理和实例演示下降UI Panel的开销。

《如何大幅优化NGUI的堆内存分配》
本文旨在修改NGUI的几处底层实现,从而规避堆内存的临时分配。文末,经过复杂的实例来这种方法进行了测试,经过比较能够看出,该方法能够大幅优化UI界面在运行时的堆内存分配。

对于NGUI解决方法的优化主要包括如下几个方面:

  • 对UIGeometry的顶点属性作了缓存池,并保证OnFill时进行按需选择
  • 经过unsafe的方法来修改IndexBuffer的长度
  • 填充数组前充分设置List.capacity

《高效的iPhone X适配技术方案(UGUI和NGUI)》
本文做者旨在经过改锚点的方式,分别实如今NGUI和UGUI上的iPhone X适配技术方案,并结合自身项目经验,阐述了主要的实现细节,但愿能对广大游戏开发团队有借鉴意义。

《如何绕过Unity打造本身的HUD UI系统》
详细讲解如何本身实现一套UI系统渲染器,并实现HUD的高效渲染,从而解决战斗过程当中大量头顶血条和伤害数字效果形成的卡顿问题,特别适合于大量HUD高频出现的游戏项目,内附工程源码方便移植。

 


工具

《一个高效研发的制胜之道 | UWA GOT Online功能说明》
无论项目自己是否重度,性能调优永远是上线前的必经之路。优化性能,不只须要足够深度的分析来定位问题瓶颈,也需前瞻性的保障措施来缓解后续的优化压力和性能风险。所以,咱们推出了UWA GOT Online,方便研发团队在本地真机测试,并能在编辑器中搭建本地服务器查看性能数据。

 

《如何读懂UWA性能报告?—UGUI篇》
《如何读懂UWA性能报告?—NGUI篇》
UI模块是不少开发团队头疼的疑难杂症之一,它的性能和UI设计师的制做及工程师的实现息息相关,两套看上去彻底同样的UI颇有可能在底层设计和实现上大相径庭,所以性能也截然不同。因此咱们在UWA测评报告中也提供了UI的性能分析。

不管对于从业者仍是正在读大学的技术萌新,学习的有效时间和我的时间都是有限的。高效学习者最在乎的是时间的价值,一个须要体系化的知识地图就显得尤其重要。以上就是本期为你们梳理的Unity引擎UI模块知识Tree,做为体系化的知识,咱们但愿你们能掌握背后的逻辑与原理,结合学习方法论并反复实践,可以在本身的项目中更高效地解决UI问题。同时也欢迎你们向咱们投稿,交流行业内的技术知识。

相关文章
相关标签/搜索