UWA学堂 | 中级课程汇总

UWA学堂 | 中级课程汇总

本栏目汇总了UWA学堂上所有中级课程并按类区分,会持续根据上新课程不断更新!

逻辑代码类

《Unity引擎Navmesh的导出及应用》
这篇文章向读者提供一个完整详细的解决方案。主要内容包括RecastNavigation的基本原理,Unity NavMesh导航数据导出的详细算法流程,同时附带的项目工程则包含了完整的导出算法的实现,数据存储以及导出数据在 RecastNavigation系统中的加载。

整个工程包含两部分:
工程一是基于RecastNavigation系统的导出算法和实现工程,构建后将输出DLL和 Bundle文件,作为Unity编辑器中的Native Plugin,来实现导出导航数据的功能,支持Win32/Win64/OSX64(OSX32需要自己使用旧版本 XCode设置和编译),同时还包括一个修改版本的RecastNavigation Demo,可以加载从Unity导出的NavMesh来显示;
工程二是一个Unity导出NavMesh的示例工程,使用了前者编译的插件来导出当前场景烘焙的NavMesh导航数据。

通过这个文章,你可以做到:
• 在Windows和OSX下通过Unity编辑器导出和Unity NavMesh近乎一致的数据到RecastNavigation
• 即时预览导出结果
• 导出数据模块和加载接口位于独立文件,方便接入RecastNavigation系统
• 自定义导出格式和文件读写接口
• 自定义加载和导出数据接口

《成熟的Unity热更新以及版本管理的解决方案》
如果正在头疼该怎么去做热更新,或者觉得当前自己的热更新方案不好用,本文可以为你提供一些思路。课程从实际项目上线后要解决的问题出发,分享了每个决策点为什么这么做,要解决什么问题,为什么不选择备选方案。主要包含以下内容:
版本号管理,让每一个版本号都有具体的存在意义;

  • 母包、热更新包的打包方式
  • 热更新包检测、下载以及使用细节
  • 如何做版本兼容,发了一个商店大版本,线上用户不更新商店也可以进游戏
  • 如何让热更新包尽量无冗余,尽量小
  • 简述另外一种热更新方案

《Unity项目热更新技术的性能分析总结》
针对主流热更新技术(基于C#和Lua)进行性能对比,以期让开发者找到最适合项目自身的应用方案和实现技巧。内容主要包括:

  • 主流热更新技术简介
  • 各方案原理、性能对比、适用场景
  • Lua性能瓶颈分析及其优化技巧

《DOTS深度研究之原理分析篇》
本文从DOTS 的组成和对性能的巨大提升效果入手,剖析了性能提升的基本原理与核心思想,并详细介绍了JobSystem、Burst Compiler和ECS等各个组成部分。目前 Unity 内部在转向 DOTS,各大游戏公司也会全面转向DOTS 开发,通过学习大家可以快速入门和掌握DOTS系统,以及实现将现有游戏转DOTS的方法。非常适合有相关需求的开发人员和对DOTS感兴趣的读者。

《用Lua打造类型系统:typesys》
据统计,有70%以上的游戏使用Lua来实现热更新,Lua的动态特性在带来便利的同时,也引入了“易出错、排查难、性能不可控”等一系列代码管理问题。这是很多技术团队都面临的问题,有经验的管理者都有比较完备的监管工具箱,但也有不少团队没有成熟的应对方案,随着开发内容的增多,常常被拖入泥潭。

本文作者侠懿老师,有超过10年的研发经验,早在2015年就开始使用Lua,独创了这套typesys类型系统,巧妙设计了生命周期托管、弱引用、对象池和垃圾回收等机制,不仅能为管理者提供监控信息以辅助管理,还可以约束编码的框架,避免错误,同时预留了监管扩展槽,以应对未来的新问题。

可以说,这是一套难得的好工具,课程附带源码,为了便于理解,还包含了一款使用typesys编写的小游戏,期待您在快乐的氛围中,掌握这套typesys类型系统,使您的开发工作如虎添翼。


UI类

《UGUI深度研究之源码鉴赏》
从UI的代码底层讲起,通过理解底层代码的原理来认知上层的有效优化方法。这里会从源码中深入分析UI网格重建的实现原理,并完成了提取触发UI重建的UI元素的代码实现,可以更方便更准确地定位引起UI性能问题的UI元素,从而有针对性地做优化。在分析Image、Text、Layout等部分源码的同时,也提出使用的注意事项。使开发者在UGUI制作及性能优化方面,更好地达到“知其然,知其所以然”的效果。

“UI开销如何优化?”、“如何定位引起重建的UI元素?”、“UGUI Text如何进行优化?”、“如何合理使用Layout?”、“在设置UI点击事件时有哪些注意事项?”等等这些常见的UI开发问题,都可以在这个专栏中得到解答。不管是行业新人,还是Unity从业者,相信都会有所收获。

《UI框架搭建:控件定制篇》
《UI框架搭建:消息重构篇》
《UI框架搭建:应用技巧篇》
整套框架分为三节课程讲解:第一课主要讲解控件侧的框架搭建,第二课进一步讲解消息流程框架搭建,最后一课则罗列了作者在研发过程中特别推荐的高级技巧操作。

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

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

《Unity运行时动态图集的实现》
课程讲解了Unity运行时动态可复用图集的原理以及代码解析。同时提供动态不可回收但空间利用率更高的动态不可复用图集的解析和实现方案。

笔者使用动态图集可以将多个小图合并到一张图集中,从而达到减少Draw Call的目的。同时,通过算法管理图集的空闲区域与已用区域,从而达到动态回收无引用计数的纹理,进而实现在一张图集中动态管理当前UI系统中所用的真实纹理,该图集不仅可以常驻内存,且可达到永久复用的效果。


管理类

《棘手问题的解决之道》
本文作者选择了几个有代表性的研发相关的问题,将当时排查和解决过程尽量真实的进行还原。虽然产生这些问题的技术原因大都不具有通用性,但解决问题的思路和方法,以及事后进行的总结与反思,才是作者真正想传达的。

一些有难度的技术问题攻坚也是需要很强的问题解决能力,但项目中的疑难问题除了技术挑战之外,对主程其他方面的能力和心理素质也是一场考验。


制作类

《小游戏开发的技术难点与优化经验盘点》
整篇文章分为五个部分:立项、技术选型、遇到的问题及解决方法、优化策略和渠道接入。笔者从对小游戏市场的判断入手,阐述了小团队转型小游戏的可能性。从必要的知识储备出发,阐述了小游戏该如何做技术选型。

分多项阐述了开发过程中遇到的一些问题及易犯的错误,包括引擎的场景管理、资源卸载、美术标准、自定义Shader、C++代码转移及网络通信,阐述了团队使用的一些优化策略,主要集中在GC优化及CPU优化方面。最后从性能、SDK接入和变现策略三个方面介绍了团队在渠道适配上积累的一些经验。本课程属于进阶课程,适合想从传统手游开发转型到小游戏开发的读者阅读,或想评估转型可能性的团队参考。


其他类

《Jenkins自动化打包详解》
文章主要介绍了利用Jenkins实现Unity的自动化打包发布,主要从以下几个方面展开介绍:

  • 什么是Jenkins,为什么要用它
  • 如何配置Jenkins和打包
  • Jenkins打包流程优化

《基于网格的GPU流体模拟》
文章主要介绍了基于网格的流体模拟的基本原理及其实现方式,分为4个部分。首先,简单介绍了流体模拟的概念,再是介绍相关的数学基础,然后在理论上从流体方程Navier Stokes入手,对其分解解析,逐步分析公式的每一部分的数学概念和解算过程,最后在Unity上通过Demo实现流体模拟的每一部分的计算并进行讲解。属于进阶课程,解算过程相对晦涩,适合有一定的图形学基础、数学基础或者Shader编程经验的读者。


资源管理类

《移动游戏加载性能和内存管理全解析》
基于UWA测评过的大量性能数据,对项目运行时的加载模块和内存模块进行了全方位的解析。结合大量的实际案例,让大家了解和掌握加载模块和内存模块在开发过程中需要注意的核心问题和相应的解决方案,主要包括:

  • 如何提升场景切换效率
  • 如何完善运行时的资源管理
  • 如何快速定位内存瓶颈
  • 如何快速查找内存泄露

《Addressable进阶实用方法》
本课程无缝对接上一篇学堂课程《Unity手游UI框架一站式解决方案》,学习实战项目中对资源管理系统的需求及运用。全新的10个章节涵盖了Addressable资产管理系统的全部用法和用途。课程提供源码支持,每个章节项目需求的应对手段都会用源码的方式展示。前部分讲解Addressable基础用法展示,后半部分拓展Addressable的框架,实现更多自定义的功能需求。可搭配UWA Blog连载的“Addressable基础篇”一同学习。全方位了解新版Unity的新一代资产管理系统的概念及用法。


渲染类

《Unreal引擎渲染效率解析》
在Unreal中,如何分析渲染部分的开销?如何定位渲染的瓶颈?在各类设备上如何制定合理的渲染配置?基于UWA的项目优化经验和数据统计分析,针对当前流行的渲染效果和常用技术做更进一步的解析,从而能够更高效地实现高品质的渲染效果。内容包括:

  • 渲染模块的开销分析与瓶颈定位
  • Unreal渲染模块中各种渲染效果性能开销总结

《Unity引擎渲染效率全解析》
Unity中各种高大上的渲染效果在实际开发中效率到底如何?如何去定位渲染中的性能热点?具体多大的渲染数据量算是合理的?基于UWA对各种不同类型游戏项目的优化经验和数据,针对当前流行的PBR以及实时阴影渲染技术做更进一步的详细介绍。为大家提高产品渲染效果、增加美术表现力提供合理有效的解决方案。内容包括:

  • Unity渲染模块中各种渲染效果性能开销总结
  • Unity中PBR渲染性能开销分析
  • Unity中阴影渲染性能开销分析

《如何实现角色的自阴影效果》
该篇文章可以让你理解如何在不使用光源的情况下,如何做出高效的自阴影效果。如果你希望对自阴影效果和代码实现有非常明确的理解,或者项目中恰好有自阴影效果的实现需求(但目前的实现方法又不够高效),那么,该篇文章绝对是你非常好的选择。

《光照贴图Lightmap初探》
光照贴图是游戏中很常用的一个技术,不同引擎都有相似但细节处又有很多不同的实现。本篇文章将从原理出发,梳理Unity/UE4等引擎的不同实现,并着重分析项目开发过程中常见但很容易被忽视的精度问题及解决办法,以及很多实际工程中会遇到的问题及对策。

可先阅读《Unity移动平台下的烘焙使用及优化》一文,再来进一步理解引擎底层的实现原理,以及当今世界上的主流Lightmap实现方法。

《Unity引擎景深实现原理剖析与优化》
该篇文章从基本的后处理渲染流程入手,学习DepthOfField渲染流程中的各个部分及原理,分别从如何通过深度图计算出模糊圈、计算焦外模糊效果,如何把模糊图与原图混合完成焦点清晰、焦外模糊的景深效果入手,通过剖析其每一步的原理与GPU耗时,分析思考对其进行优化,从而提高渲染效率。通过这篇文章的学习可以理解并掌握后处理性能优化的技巧。

《如何高效使用GPU Instancing技术来进行草丛渲染》
游戏中经常需要在一个屏幕内渲染大量重复的物体。例如一望无际的广阔草原,郁郁葱葱的原始森林,流光溢彩的满地珠宝等等。在Unity开发中遇到类似需求的时候,很容易碰到性能瓶颈,导致设备卡顿发热。本篇文章以草海渲染需求为例,详细介绍如何使用GPU Instancing技术进行渲染及性能优化。通过这篇文章的学习,你将直接掌握如何对场景中的海量重复物体(比如草海)进行高效渲染,以及在使用GPU Instancing功能时应该注意的方方面面。

《Unity PBR介绍及经验分享》
该课程来自于UWA DAY 2017年钱康来在会议上的视频讲座。主要讲解了他在当时项目中对于PBR的使用经验,特别是对于Standard Shader的深刻理解和优化经验。如果你希望了解Unity PBR功能的演变历史,以及在真实商业项目中的使用,该视频内容非常推荐你观看。

《基于Unreal引擎的大地形加载研究》
对于Unreal大地形制作的研究分享,让中国的开发者更直观地了解Unreal和Unity在大地形研发过程中的制作方法和性能比较。

《自优化的绘制流水线优化》
介绍了讲师近几年在绘制流水线上取得的一系列科研成果。首先介绍国际上创新提出的自优化(auto-tuning)的绘制流水线优化框架;其次介绍利用该框架开展的着色器(Shader)简化、能耗优化等多项技术,可应用于游戏、VR等实时应用中。

《画质与性能的权衡:如何使用可编程渲染管线(SRP)》
Scriptable Render Pipeline使用户能够更加灵活地控制Unity的渲染管线,以实现不同的渲染效果,同时也会带来不同的性能表现。这次报告将通过案例向大家展示LWRP,HDRP以及Custom SRP的使用,并通过数据来了解不同Pipeline的性能表现,以求让大家在开发过程中能够根据项目需求选择是否使用SRP以及使用何种SRP改进所用的管线。

《Unity项目从Gamma转Linear颜色空间的经验分享》
Linear颜色空间的转换是这两年大部分研发团队都在谈论的话题,从如何转变、到转变过程中所需要的工作流转变、再到转变后的各种特殊问题处理(比如UI、特效的半透问题,PBR结合的相关问题等),该篇文章进行了详细的说明和阐述。作者通过自己所经历的大量项目实战,来对Gamma转Linear过程中的关键问题进行了一一阐述和讲解。可以说,通过这一篇文章,你可以快速对行业内该方面的技能需求达到非常深刻和深入的理解。


动画类

《Unity移动游戏中动画系统的性能优化》
基于对Unity移动游戏的动画系统性能瓶颈进行有针对性的分析,并通过大量案例在不同移动设备上实际运行的性能分析,将动画系统性能瓶颈进行归纳和总结,进而提出优化建议和解决方案。主要包括:

  • 动画系统的性能瓶颈现状
  • 动画系统中需要关注的重要性能参数
  • 针对各性能瓶颈的优化建议和解决方案
  • 对动画系统在多角色场景中的应用提出多种解决方案

综合类

《Unity游戏的换装系统优化》
本文主要介绍了游戏内换装系统的优化。尤其对于多人同屏,30人以上高并发的频繁换装需求,本文对帧率优化和内存优化均提供了详细方案和Demo代码下载,适合对Unity和引擎渲染有一定基础的读者。

《如何让你的游戏性能转危为安?——UWA性能保障体系》
本文详细介绍了UWA性能保障体系,并通过具体实例来系统说明研发团队如何根据UWA性能保障体系来保证游戏项目研发过程中性能问题的及时定位和及时解决。通过本次报告,研发团队可以掌握如何通过优化研发流程来达到持续保障游戏项目开发的健康性和高效性,以此降低项目的研发时间和成本。