Unity优化百科(UWA 博客目录)

Unity优化百科(UWA 博客目录)

Hello, 各位Unity开发者,无论您是正用着UWA的工具、还是阅读着UWA的相关技术文章亦或是在UWA博客中寻找一个问题的解答,我们都倍感荣幸能和你在此相遇。本篇可以说是UWA产品服务的向导,认真读完它,您会了解UWA究竟是做什么的,并且如何利用UWA提供的资源和工具。在与UWA的日益接触中,您会发现它不仅能为你们项目的性能保驾护航,还能少走很多弯路,缩短优化的时间。


Part 1. 优化工具

Q:UWA提供哪些可以快速提升性能的工具?
这个要从UWA的定义说起,UWA由侑虎科技开发的游戏/VR应用性能优化平台,目前提供 1)性能检测与优化 2)资源检测与分析 3)UWA GOT 三大工具。下面我们将分别介绍。

一、性能检测与优化
通过真人真机对项目测试,提供针对性的性能报告和优化方案,既能从宏观上分析项目运行时的整体趋势,包括总体CPU性能、GC调用频率和引擎各模块性能等,也能从微观上深入剖析内存管理、资源使用以及逻辑代码在运行时的效率瓶颈。研发团队通过对报告提供的方案进行针对性的优化,能在短期内提升项目的运行效率。

入手方法:该服务主要通过在UWA官网上提交项目的测试包(apk、ipa等,无需工程源码)来完成。由UWA工作人员测试分析后,会提供针对该项目的性能报告和分析建议,可以在此参考报告demo

该工具分为免费版和收费版,免费版一个月可以使用两次。强烈推荐大家来试试免费版哦!

二、资源检测与分析
反馈资源的打包情况,包括具体包含的资源情况、详细的依赖关系和资源的冗余程度等。用户通过优化报告指出的冗余问题来实现减小包体、减小内存并提升加载速度的目的。

入手指南:用户在UWA官网上传AssetBundle包(无需游戏包),一旦上传,UWA将自动开启检测并返回结果,一般时长在30分钟以内(视AB包体量而定),可以在此参考报告demo

该工具永久免费使用,无使用次数限制。

三、本地性能测试工具:UWA GOT

UWA GOT 全称 Game Optimization Toolkit,是由侑虎科技研发的本地性能测评工具。它既能方便研发团队在本地直接进行真机测试,也支持在Unity Editor中搭建本地服务器来接收和分析性能数据。整个测试过程中,研发团队能自定义测试时间和流程,几分钟后即可查看性能数据,同时还提供深度的数据分析,如脚本中的主要函数耗时、堆内存的具体分配堆栈等高级分析功能,从此为大家的项目性能又增添一份安全堡垒!

具体功能说明:戳此传送门
入手指南:戳此传送门
价格:RMB399,包括维护和更新


Part 2. 干货大全

一、引擎把握篇

性能卡顿、内存泄露、资源冗余...这些开发中遇到的疑难杂症大部分都能在这里找到解决方法,它们无不通过大量的项目深度优化和周而反复的测试验证。如果你想避开一些不必要的坑,请务必啃下这些硬货!

1.1 Unity性能优化进无止境——CPU篇
从渲染、UI、加载等几个重要维度分析了目前大部分项目中存在的CPU性能问题和解决方案

1.2 Unity性能优化进无止境之内存篇(基础篇)
谈优化必谈内存,该文深入浅出地分析了Unity项目的内存占用

1.3 Unity性能优化进无止境之内存篇(进阶篇)
内存泄露、Mono无效堆内存、资源冗余...你关注的内存问题都在这里!

1.4 AssetBundle打包机制详解(5.x)
(4.x 版本的API接口有所差别,请看这里)

1.5 AssetBundle内存管理机制
AssetBundle真是个绝妙的设计,但是想说爱你不容易!

1.6 Profiler中常见的高CPU耗时函数

1.7 代码热更新(dll反射)
亘古不变的话题了

1.8 加载模块详解(纹理篇)
加载龟速?是时候来点加速度了!

1.9 加载模块详解(网格篇)

1.10 加载模块详解(Shader篇)

1.11 加载模块详解(动画资源)


二、提升:工欲善其事,必先利其器

在这里不仅有效果拔群、性能出众的插件帮助大家省心省力,也有卧虎藏龙的民间高手抛钻引玉给大家分享自己的优化技巧。

1、UI相关

2.1.1 UGUI 降低填充率技巧两则
2.1.2 如何优化UGUI的ScrollRect
2.1.3 UGUI表情系统解决方案
2.1.4 UGUI 文本多语言方案

2、制作相关

2.2.1 毛发及眼球的渲染技术
2.2.2 游戏中的角色渲染技术之皮肤篇
2.2.3 卡通渲染及其相关技术总结
2.2.4 Unity移动端动态阴影总结
2.2.5 合并Shader系列 | 如何合并渲染状态
2.2.6 如何打造高逼格耀斑效果
2.2.7 Unity线性空间下移动设备上烘焙变暗问题处理
2.2.8 Unity 5烘培场景带来的“爱”与“愁”
2.2.9 GPU Skinning 加速骨骼动画
2.2.10 如何精简Unity中使用的字体文件
2.2.11 使用MaterialPropertyBlock来替换Material属性操作
2.2.12 Unity图片优化神器 - Dither算法进阶方案
2.2.13 布料系统原理浅析和在Unity手游中的应用
2.2.14 聊聊Unity里的嵌套Prefab
2.2.15 如何实现更真实的软阴影效果
2.2.16 开启HDR时,半透明渲染画面异常的解决方案
2.2.17 使用Fast Shadow Receiver优化渲染效率
2.2.18 Unity+ iPhone X适配方案
2.2.19 Unity手游开发札记——使用Shader进行UGUI的优化
2.2.20 iOS下拆分Unity图集的透明通道(不用TP)
2.2.21 Journey中的沙丘渲染及其Shader实现
2.2.22 扩展Unity模型编辑器
2.2.23 如何在Unity中实现Stochastic Screen Space Reflection效果
2.2.24 高效的iPhone X适配技术方案(UGUI和NGUI)
2.2.25 如何大幅优化NGUI的堆内存分配
2.2.26 如何在Unity中实现Stochastic Screen Space Reflection效果
2.2.27 基于Unity引擎的Bent Normal实现
2.2.28 Unity移动平台下的烘焙使用及优化
2.2.29 基于2D SDF的体积字实现
2.2.30 Unity如何实现投影阴影效果
2.2.31 Unity引擎后处理性能优化方案解析
2.2.32 利用多进程并行化加速Unity资源构建
2.2.33 Unity引擎iOS增量编译方法解析

3、插件&工具相关

2.3.1 插件 | 那些你不得不用的好插件!——工具篇
2.3.2 插件 | 你的项目和大作只差一个插件的距离!——美术效果篇
2.3.3 插件 | 好插件让你事半功倍!——资源篇
2.3.4 技巧 | Unity中Avatar换装实现
2.3.5 插件 | Unity一键图集生成工具,附源码 (基于NGUI和TexturePacker)
2.3.6 插件 | Unity游戏界面解决方案: PSD For UGUI
2.3.7 插件 | ShaderForge插件分享
2.3.8 技巧 | ScreenSpaceShadowMask Blur推荐
2.3.9 插件 | USequencer系列 |初识
2.3.10 插件 | USequencer 准确显示瞬时事件和持续事件
2.3.11 插件 | USequencer 缤纷事件、事件间吸附
2.3.12 屏幕特效插件分析 | FxPro & Beautify
2.3.13 屏幕后处理特效性能分析—运动模糊
2.3.14 Unity插件开发基础—浅谈序列化系统
2.3.15 如何高效定位Unity安卓开发中的闪退问题
2.3.16 ACT技能编辑器的制作经验分享

4、内存相关

2.4.1 Lua性能优化—Lua内存优化
2.4.2 用好Lua+Unity,让性能飞起来——Lua与C#交互篇
2.4.3 用好Lua+Unity,让性能飞起来—LuaJIT性能坑详解
2.4.4 Unity项目常见Lua解决方案性能比较
2.4.5 Lua配置表存储优化方案
2.4.6 Unity匿名函数的堆内存优化
2.4.7 给调皮的AssetBundle加上面向对象式加载调试管理
2.4.8 Unity 5.x AssetBundle零冗余解决方案
2.4.9 AssetBundle进阶内存优化(Unity 4.x)
2.4.10 巧用UWA资源检测,轻松剔除冗余资源!
2.4.11 听说你的项目中仅这些资源就卡成了翔?看看他们怎么做!
2.4.12 Lua的CPU开销性能优化
2.4.13 我所理解的委托和匿名函数

5、研发实录

2.5.1 我们用50次游戏性能的深度优化,总结出了五条“毒鸡汤”
2.5.2 Unity手游开发札记—大世界动态加载实战
2.5.3 Unity手游iOS内存分析和测试
2.5.4 Unity 协程运行时的监控和优化
2.5.5 Unity 游戏的String interning优化
2.5.6 Unity动画文件优化探究
2.5.7 动画重定向技术分析及其在Unity中的应用
2.5.8 VR交互动画短片《拾梦老人》的开发经历
2.5.9 独立游戏《Abi》场景耗时分析
2.5.10 Optimize GameObject选项对骨骼Transform的影响
2.5.11 《为谁而炼金》UI界面加载性能分析
2.5.12 Unity中ShaderLab内存优化
2.5.13 使用UWA GOT优化Unity性能和内存
2.5.14 客户端配置文件优化策略
2.5.15 Unity中字体名对依赖关系的影响
2.5.16 《小米超神》技术总监王啸予:重度MOBA的优化之路
2.5.17 基于团队的持续优化之道
2.5.18 《Exploring in UE4》多线程机制详解

6、行业参考

2.6.1 UWA发布 | 2017 Unity手游体检蓝皮书 — ARPG篇
2.6.2 UWA发布 | 2017 Unity手游体检蓝皮书 — MMORPG篇
2.6.3 UWA发布 | 2017 Unity手游体检蓝皮书 — MOBA篇
2.6.4 Unity版本使用情况统计报告

7、案例精讲

2.7.1 UWA助力独立游戏开发!《江湖X:汉家江湖》性能诊断精讲!
2.7.2 一次MMO手游的性能诊断全纪录
2.7.3 RPG |《星辰奇缘》测评精讲
2.7.4 ARPG|《王者之剑2》性能数据精讲
2.7.5 RPG |《仙剑奇侠传3D回合》性能精讲
2.7.6 ACT |《艾尔战记》性能精讲
2.7.7 MMO |《六龙争霸》测评精讲
2.7.8 FPS |《全民枪战》测评精讲
2.7.10 FPS手游《战地先锋》性能案例精讲
2.7.11 MOBA手游《小米超神》案例精讲
2.7.12 UWA官方Demo新增《小米超神》,全面揭秘重度手游的性能表现!

8、学术论文

2.8.1 基于功耗预算的实时绘制
2.8.2 微表面模型-PBR渲染管线的材质
2.8.3 基于物理的渲染—更精确的微表面分布函数GGX
2.8.4 基于物理的渲染—基于球面调和基的实时全局光照明
2.8.5 基于物理的渲染—基于Haar小波基的实时全局光照明
2.8.6 基于物理的渲染-用真实的环境光照亮物体
2.8.7 基于物理的渲染—HDR Tone Mapping
2.8.8 CG中的深度学习 |Siggraph 2017 相关论文总结


Part 3. UWA 问答社区

所有的已知,在未知面前不过是冰山一角。遇到问题怎么办,投石问路!正所谓不学不问,不问不知。一个高质量的提问是解决问题的一半。如果你真心想解决某个问题,不妨和大家一起来讨论下这些话题吧。

3.1 资源放到resource下面有什么优势和劣势
3.2 如何降低动画文件的浮点数精度
3.3 AssetBundle 粒度规划
3.4 数据模板表打包以及加载方式怎么做可以兼顾加载速度和热更新表结构
3.5 资源引用最后导致应用包体大小的疑惑
3.6 AssetBundle未加载完使用错误
3.7 项目初期如何确定美术规范
...

UWA问答社区地址:answer.uwa4d.com

关于我们的官方QQ群(465082844)
如果你也想做出高颜值的代码,如果你也期待能让项目走向性能巅峰,如果你本人也乐于分享从善如流,欢迎加入UWA群;与其闭门造车不如群策群力;比起形而上学,我们更乐于解决实际问题。


Part 4. UWA 自学素材

UWA不仅举办了多次技术优化日,也积极活跃在网络。我们尽己所能,将技术的触角传递到每个角落。以下就是我们留下的足迹:

4.1 8.10 直播回顾 | 一个小时内,我们用UWA GOT解决了这些问题...
4.2 UWA 六月直播季 | 6.29 Unity UI模块中的优化案例精讲
4.3 UWA 六月直播季 | 6.22 Unity中动画系统性能优化方案回顾
4.4 UWA 六月直播季 | 6.15 Unity引擎渲染效率全解析
4.5 UWA 六月直播季 | 6.8 移动游戏加载性能和内存管理全解析
4.6 5.4 UWA直播回顾:Unity游戏的代码堆内存优化
4.7 NGUI性能优化技巧(上)
4.8 NGUI性能优化技巧(下)
4.9 UGUI美术制作——如何实现次时代美术效果
4.10 UGUI性能优化技巧
4.11 请让我用一小时,将你的项目性能提升一个高度!
4.12 UWA优化日厦门站回顾 | 资深TA教你如何将艺术概念转化为渲染代码
4.13 不喧哗,自有声—记UWA优化日深圳站(附完整技术PPT)
4.14 记一次冷雨寒风日的UWA优化日(内附技术PPT)
4.15 You should be here !| 附UWA优化日技术PPT


Part 5. 虚幻引擎学习之路

我们会将UWA内部学习过的Unreal相关技术文档进行总结和整理,并陆续发布,计划发布两大系列文章,第一个系列是功能篇,主要讲述我们学习过程中所了解到的Unreal引擎功能特色;第二个系列是性能篇,重点分析Unreal引擎在多个平台(特别是移动平台)上的性能效率。

5.1 虚幻引擎学习之路:渲染模块之光照系统
5.2 虚幻引擎学习之路:渲染模块之材质系统
5.3 虚幻引擎学习之路:相机图像后处理
5.4 虚幻引擎学习之路:渲染模块之全局光照明
5.5 虚幻引擎学习之路:动画模块之基础篇
5.6 虚幻引擎学习之路:动画模块进阶篇之动画融合
5.7 虚幻引擎学习之路:动画模块进阶篇(二)
5.8 虚幻引擎学习之路:粒子系统篇(一)
5.9 虚幻引擎学习之路:粒子系统篇(二)
5.10 虚幻引擎学习之路:新粒子系统Niagara
5.11 虚幻引擎学习之路:基于Unreal引擎的大地形加载研究
与其他世面文章不同的是,我们会在讲解中揉入和Unity引擎相似功能的对照说明,以方便大家更快地对其进行理解和掌握。这里,需要郑重说明的是,我们之所以这么做并不是为了比较Unreal引擎和Unity引擎谁更强大,二者都是当今世界上伟大的引擎。我们这么做是因为发现这可以极大地提高对于Unreal引擎的学习效率。


到这里便是UWA迄今为止所有在Blog以及微信上推送的技术博文汇总,我们将其梳理,是为了让一些经典好文能够重现,让知识能常流通,同时也是为了方便大家日后查找。本篇文章作为UWA Blog里的目录将随时更新,建议大家Mark起来,有空没空随手刷上个两篇,结合自身的研发项目多做测试加深理解,UWA相信一定事半功倍。

最后也要感谢所有向UWA供稿的开发者,感谢你们将这么棒的想法分享出来,从而帮助到更多的研发团队。当然如果你也有好的想法或者研发路上的心得体验,也可以分享给我们哦(support@uwa4d.com),知识的百科全书需要你我共筑。