资源表示 Unity 项目中用来创建游戏或应用的任何项。资源可以代表项目中的视觉或音频元素,例如 3D 模型、纹理、精灵、音效或音乐。资源还可以表示更抽象的项目,例如任何用途的颜色渐变、动画遮罩或任意文本或数字数据。
资源可能来自 Unity 外部创建的文件,例如 3D 模型、音频文件、图像。还可以在 Unity 编辑器中创建一些资源类型,例如 ProBuilder 网格 (ProBuilder Mesh)、Animator Controller、混音器 (Audio Mixer) 或渲染纹理 (Render Texture)。
上图显示了在 Unity 中使用资源时的典型工作流程。每列代表一个单独的步骤,如下所述:
导入是将源文件载入 Unity 编辑器以进行处理的过程。在将文件保存或复制到项目的 Assets
文件夹时,Unity 将导入该文件,从而使您可以在编辑器中使用该文件。
了解将资源导入 Unity 的一些基础知识很重要,例如文件在项目中的存储位置、如何调整每种资源的导入设置、元文件的作用以及资源数据库如何存储导入的数据。有关这些主题的更多信息,请参阅导入资源。
通过使用 Unity Accelerator,您可以在与团队合作时加快 Unity 对资源的处理速度。
一旦您将一些资源导入到您的项目中,就可以开始创建您的游戏或应用。这通常涉及将资源作为游戏对象放置到一个或多个场景中,并添加脚本来控制用户如何与它们交互。
随着项目开发的发展,您可能需要将资源分成不同的组,这样您的游戏就可以在运行时逐步下载选定的额外内容。
在创建过程中,您可以决定如何将您的资源分组为单独的包并实现选择何时加载它们的代码。
这允许您通过减少初始下载的大小,并在之后运行时加载其他资源,从而管理游戏或应用的下载大小和内存使用情况。推荐的方法是使用 Unity 的 Addressables 系统。
构建是指将完成的项目导出为二进制文件的过程,然后可在您选择的平台上分发和运行这些文件。例如,在为 Windows 构建时,Unity 将生成一个 .EXE
文件,以及一些随附的数据文件,然后您可以分发这些文件。
如果您使用 Addressables 或 Asset Bundles 将您的资源分组为单独的下载包中,您还需要构建这些包文件以进行分发。
您可以在自己的计算机上构建项目,也可以使用 Unity 的 Cloud Build 服务,它可为您的 Unity 项目提供自动构建生成和持续集成。
在完成游戏或应用及其内容包的构建后,用户需要一种方式对其进行访问。分发方法的选择取决于您的目标平台。
例如,移动平台有自己的应用商店,您可以使用专业发布商,或者可在自己的服务器上自行托管。
Unity 提供了自己的 Cloud Content Delivery 服务,可托管您的游戏或应用及其内容,并将其提供给您的用户,该服务完全集成到 Unity 开发平台中。这样可节省大量的时间,对于内容丰富的实时游戏或需要定期更新内容的应用程序很有价值。
当用户加载和使用您的游戏或应用时,您可以通过设置规则和编程,以及您对资源进行分组和打包的方式,为您的用户提供其所需的体验和内容。
结合使用此处描述的技术和服务,您可以提供快速的初始下载,并在项目的整个生命周期内推出持续更新和额外内容。
通过 Unity 的资源工作流程所提供的工具和功能,可以轻松地直接在 Unity 编辑器中进行编辑和设计。
在 Unity 中使用资源时,您可以使用不同的策略。哪种适合您的项目取决于以下因素:您的团队规模、项目规模、目标平台、这些平台上的内存可用性,以及您是否要在发布后发布更新、补丁和 DLC。
例如,如果您在团队中工作,除了为您的项目使用版本控制系统外,您还可以使用缓存服务器来缓存 Unity 的导入结果,以节省整个团队的时间。
如果您使用大量作为单独包发布的资源,可能会发现将部分资源组分离为单独的项目很有帮助,这样您的团队成员就不需要一次性加载大型项目来使用这些资源包。
如果您将所有资源保存在一个项目中,则在构建时,Unity 会自动以当前所选平台的正确格式进行构建。但是,如果您使用上述技术将您的资源拆分到多个项目中以分别构建您的包,则必须为您支持的每个平台进行构建。有关更多信息,请参阅 Addressables 手册中的为多个平台构建。
平台的特征还决定了运行时资源在组织方式上的局限性和可能性。例如,在独立(PC 或 macOS)平台上,虚拟内存提供几乎无限的内存池,因此使用 Resources 文件夹或大型资源包通常不会造成内存方面的难题。相反,移动设备和游戏主机平台通常虚拟内存比较有限甚至不提供,因此为这些平台构建的应用必须更有效地管理资源加载和卸载。
用户对平台的期望也是一个重要的考虑因素。例如,在移动平台上,漫长的初始下载和安装过程可能会导致玩家尚未尝试就放弃了您的应用。出于这个原因,移动应用通常在初始构建中只包含最少的资源集,并在用户第一次运行您的应用时从远程服务器下载剩余的资源。