代码质量

前言

项目老大回家之前,让我和另一个人刚入职的程序,看新的一版的战斗UI的案子。但工作推进缺交给了原来的程序负责。只有4天的开发时间,就由原来的人负责。
在验收时间之前,出了一个中间版本,有几个问题。老大让我帮忙看下。
在重新梳理了下当前的需求,我在代码看到一个按钮逐渐显示的代码。我感觉对了下一个版本的需求。发现目前代码的无法满足,下个版本功能的扩展。

AssetBundle的基本原理

AssetBundle基本原理

版本检查:2017.3 -难度:高级

这是涵盖Unity5资产,资源和资源管理系列文章的第四章。

本章讨论AssetBundles。它介绍了构建AssetBundles的基本系统,以及用于与AssetBundles进行交互的核心API。具体来说,它讨论了AssetBundles本身的加载和卸载以及AssetBundles中特定资产和对象的加载和卸载。

有关AssetBundles使用的更多模式和最佳实践,请参阅本系列的下一章。

资产,对象和序列化

资产,对象和序列化

版本检查:2017.3 - 难度:高级

这是关于Unity 5中的资产,资源和资源管理的系列文章的第二章。

本章将介绍Unity序列化系统的深层内容,以及Unity如何在Unity编辑器和运行时维护不同对象之间的强引用。它还讨论了对象和资产之间的技术区别。这里涵盖的主题是理解如何有效地在Unity中装载和卸载资产的基础。适当的资产管理对于保持加载时间短和使用内存使用率底至关重要。

资源管理

每个游戏都是有种类繁多的资源(有时候称为资产或媒体的构成),例如网络、材质、纹理、着色器程序、动画、音频,关卡布局、碰撞数据、物理参数等。游戏资源必须妥善保管,这包括两方面,一方面是建立资源的离线工具,一方面是在执行期载入,卸下及操作资源。因此,每个游戏都有某种形式的资源管理器。

每个游戏资源管理器都有两个元件组成,这两个元件及独立又相互整合。其一负责离线工具链,用来创建资产及把它们转换成引擎可用的形式,另一个元件在执行期间管理资源,确保资源在使用之前已转入内存,并在不需要的时候把它们从内存卸下。

缓存命中

缓存命中

游戏开发者可分为两类:在他们的游戏引擎中使用STL模板库之类的。以及不使用的。一些开发者认为STL内存分配模式(memory allocation pattern)不高效,也导致内存碎片问题,使STL不能在游戏中使用。一些开发者认为STL的强大和方便超过它的问题,而且大部分的问题还是可以变通解决,笔者个人认为STL在PC上可以无障碍使用。因为PC上可以无障碍使用虚拟内存(virtual memory)系统,谨慎的分配内存变得不那么紧要(虽然游戏开发者仍要非常谨慎)。在游戏主机上,只有有限(甚至没有)虚拟内存功能,而且内存命中失败(cache miss)的代价极高,游戏开发者最好编写自定义的数据结构,保证是可预期或者有限的内存分配模式。(在PC上做同样的事情,肯定也不也错不了。)【以上内容来自《游戏引擎架构》第29页】

|