1 前言
资源工作流笔记,参考官方文档。
官方文档:Working in Unity→Assets and media→Asset workflow。
文档版本:Unity6
2 资源工作流程
资源表示 Unity 项目中用来创建游戏或应用的任何项。资源可以代表项目中的视觉或音频元素,例如 3D 模型、纹理、精灵、音效或音乐。资源还可以表示更抽象的项目,例如任何用途的颜色渐变、动画遮罩或任意文本或数字数据。
资源可能来自 Unity 外部创建的文件,例如 3D 模型、音频文件、图像。还可以在 Unity 编辑器中创建一些资源类型,例如 ProBuilder 网格 (ProBuilder Mesh)、Animator Controller、混音器 (Audio Mixer) 或渲染纹理 (Render Texture)。

上图显示了在 Unity 中使用资源时的典型工作流程。每列代表一个单独的步骤,如下所述:
-
将资源导入 Unity 编辑器
-
使用 Unity 编辑器通过这些资源创建内容。
-
构建您的应用或游戏文件,以及可选的随附内容包
-
分发构建的文件,以便您的用户可以通过发布者或应用程序商店访问
-
根据您用户的行为以及您对内容进行分组和捆绑的方式,在运行时根据需要加载进一步更新。
导入
导入是将源文件载入 Unity 编辑器以进行处理的过程。在将文件保存或复制到项目的 Assets 文件夹时,Unity 将导入该文件,从而使您可以在编辑器中使用该文件。
学习一些将资源导入Unity的基础知识是很重要的,例如文件存储在项目中的位置,如何调整每种资源的导入设置,元文件的用途,以及资源数据库如何存储导入的数据。有关这些主题的详细信息,请参见导入资源。
通过使用 Unity Accelerator,您可以在与团队合作时加快 Unity 对资源的处理速度。
创建
一旦您将一些资源导入到您的项目中,就可以开始创建您的游戏或应用。这通常涉及将资源作为游戏对象放置到一个或多个场景中,并添加脚本来控制用户如何与它们交互。
随着项目开发的发展,您可能需要将资源分成不同的组,这样您的游戏就可以在运行时逐步下载选定的额外内容。
在创建过程中,您可以决定如何将您的资源分组为单独的包并实现选择何时加载它们的代码。
将资源分组到包中可以减少初始下载的大小,并在运行时加载一些资源。这可以帮助你优化游戏或应用的下载大小和内存使用。推荐的方法是使用Unity的Addressables系统。【Eu:说得好,我选择YooAsset。】
Build
构建指的是将完成的项目导出为二进制文件的过程,然后您可以将其分发并在您选择的平台上运行。例如,当为Windows构建时,Unity会生成一个.exe文件,以及一些附带的数据文件,然后你可以分发这些文件。
如果您使用 Addressables 或 Asset Bundles 将您的资源分组为单独的下载包中,您还需要构建这些包文件以进行分发。
你可以在你自己的电脑上构建你的项目,或者你可以使用Unity的构建自动化服务,它为你的Unity项目提供自动化的构建生成和持续集成。
分发
在完成游戏或应用及其内容包的构建后,用户需要一种方式对其进行访问。分发方法的选择取决于您的目标平台。
例如,移动平台有自己的应用商店,您可以使用专业发布商,或者可在自己的服务器上自行托管。
Unity 提供了自己的 Cloud Content Delivery 服务,可托管您的游戏或应用及其内容,并将其提供给您的用户,该服务完全集成到 Unity 开发平台中。这样可节省大量的时间,对于内容丰富的实时游戏或需要定期更新内容的应用程序很有价值。
加载
当用户加载并使用你的游戏或应用时,加载过程和体验是由你所设置的规则和编程以及你对资产进行分组和捆绑的方式所定义的。
结合使用此处描述的技术和服务,您可以提供快速的初始下载,并在项目的整个生命周期内推出持续更新和额外内容。
2.1 美工工作流程的好处
Unity的资产工作流有工具和功能,使其易于在Unity编辑器中直接编辑和设计:
-
支持诸多不同的文件格式
-
在 Unity 和第三方工具之间快速往返
-
预设为资源类型应用自定义默认设置
-
使用 Addressables 和 Cloud Content Delivery 无缝更新实时内容
2.2 程序员工作流程的好处
-
量身定制的内容管道(例如,您可以编写脚本来处理Unity导入的资产,或者根据自己的规则控制Unity自动应用的预设)。
-
通过脚本修改源资源。您可以通过游戏代码来调整源资源,如材质、网格或物理。
-
使用 Addressable 资源系统节省内存,这简化了复杂项目的内容管理,并提供了自动内存管理和性能分析工具。
-
针对目标平台优化资源。当您制作一个多平台项目时,可能会有数百种不同的纹理,它们都需要针对不同的平台以不同的分辨率打包。当您为每个目标平台进行构建时,Unity 会自动打包、调整和重新压缩您的资源。
2.3 工作流程考虑事项
在Unity中处理资产时,你可以使用不同的策略。哪个适合你的项目取决于你的团队规模、项目规模、目标平台、这些平台上的内存可用性,以及你是否想在发布后发布更新、补丁和DLC等因素。
例如,如果你在一个团队中工作,你可以使用一个缓存服务器和你的版本控制系统来缓存Unity的导入结果,以节省整个团队的时间。
如果您使用大量作为单独包发布的资源,可能会发现将部分资源组分离为单独的项目很有帮助,这样您的团队成员就不需要一次性加载大型项目来使用这些资源包。
2.4 平台注意事项
如果你将所有资源保存在一个项目中,Unity会在你运行构建时自动以当前选择平台的正确格式构建它们。但是,如果您将资产拆分到多个项目中以单独构建包,则必须为您支持的每个平台进行构建。有关更多信息,请参阅构建多平台的可寻址文档。
平台的特征还决定了如何组织运行时资产的限制和可能性。例如,在独立平台(PC或macOS)上,虚拟内存提供了几乎无限的内存池,因此使用Resources文件夹或大型资源包通常不会带来内存挑战。相反,移动设备和主机平台通常只有有限的虚拟内存或根本不存在虚拟内存,所以针对这些平台开发的应用必须更有效地管理资产加载和卸载。
用户对平台的期望也是一个重要的考虑因素。例如,在移动平台上,漫长的初始下载和安装过程可能会导致玩家尚未尝试就放弃了您的应用。出于这个原因,移动应用通常在初始构建中只包含最少的资源集,并在用户第一次运行您的应用时从远程服务器下载剩余的资源。
3 导入资源
你可以将Unity之外创建的资源带到你的Unity项目中。为此,您可以将文件直接导出到项目的Assets文件夹中,或者将其复制到该文件夹中。对于许多常见的格式,你可以将源文件直接保存到项目的Assets文件夹中,Unity可以读取它。Unity也会检测到你什么时候保存新修改的文件,并在必要时重新导入文件。
当你创建一个Unity项目时,Unity会创建一个文件夹(以你的项目命名),其中包含以下子文件夹:
-
Temp -
Library -
Assets -
ProjectSettings -
Logs -
Packages
你可以保存或复制你想在项目中使用的文件到Assets文件夹中,你可以使用Unity中的project窗口来查看你的Assets文件夹的内容。因此,如果你保存或复制一个文件到你的Assets文件夹,Unity会导入它,然后它会出现在你的Project窗口中。
当你在Unity中修改文件时,Unity并不会修改你的原始源文件,尽管你可以选择不同的压缩、修改或处理方式。相反,导入过程会读取你的源文件,并在内部为你的资产创建一个游戏就绪的表示,与你选择的导入设置相匹配。如果你修改了资源的导入设置,或者对Assets文件夹中的源文件进行了更改,Unity会重新导入资源以反映你的更改。
警告:在大多数情况下,出现在“项目”窗口中的项代表计算机上的实际文件。如果你在Unity Editor Project窗口中删除它们,你也会从你的电脑中删除它们。
当文件被添加到Assets文件夹或者被修改时,Unity会自动检测文件。当您将任何资源放入Assets文件夹时,它将出现在Project窗口中。

如果你从电脑的文件浏览器中拖动一个文件到Unity的Project窗口中,Unity会复制一个文件并将其放入你的Assets文件夹中。然后,您可以从Project窗口访问该副本。
为了将资源集合从另一个Unity项目中引入到你的项目中,你可以使用资源包。
3.1 资源导入设置
安全移动或重命名资产的最简单方法是始终在Unity的项目文件夹中进行。这样,Unity会自动移动或重命名相应的元文件。要了解更多关于.meta文件和导入过程的信息,请参见Unity如何导入资源。
Unity支持的每种类型的资源都有一组导入设置,这些设置会影响资源的外观或行为。要查看资产(资源)的导入设置,请在Project view中选择该资产。该资源的导入设置将出现在检查器中。出现的选项取决于所选资产的类型。
例如,在 Unity 图像的导入设置中,可选择将其导入为纹理、2D 精灵还是法线贴图。在 FBX 文件的导入设置中,可调整比例、生成法线或光照贴图坐标以及拆分和修剪文件中定义的动画剪辑。

对于其他资产类型,导入设置看起来不同。您看到的各种设置与所选资产的类型有关。下面是一个音频资源的例子,其相关的导入设置显示在检查器中:

如果您正在开发一个跨平台项目,您可以覆盖“默认”设置,并在每个平台的基础上分配不同的导入设置。
3.2 资源处理
Unity读取并处理你添加到Assets文件夹中的任何文件,并将文件内容转换为内部游戏就绪数据。资产文件本身保持不变,内部数据存储在项目的Library文件夹中。这些数据是Unity编辑器资产数据库的一部分。
使用内部格式的资产允许Unity有内部版本的资产准备在运行时在编辑器中使用,并将未修改的源文件保存在assets文件夹中。资产文件和内部版本之间的区别意味着您可以快速编辑资产文件,并让编辑器自动选择更改。例如,你可以将.psd文件直接保存到Assets文件夹中,但移动设备和PC显卡等硬件无法直接处理该格式以将其渲染为纹理。相反,Unity可以将内部版本转换为这些平台可以处理的格式。
Unity将资源的内部表示存储在Library文件夹中,它的行为就像一个缓存文件夹。作为用户,您永远不需要手动更改Library文件夹;如果你这么做了,你可能会在Unity Editor中对项目产生负面影响。这也意味着您不应该在版本控制下包含Library文件夹。
注意:如果你的项目没有在Unity中打开,你可以安全地删除Library文件夹,因为Unity可以在下次启动项目时从Assets和ProjectSettings文件夹中重新生成所有数据。
3.3 复杂资源
在某些情况下,Unity可能会在导入单个资源文件时创建多个资源。例如:
-
当一个3D文件(如FBX文件)定义材质或包含嵌入纹理。为了处理这个问题,Unity提取材质和嵌入纹理作为单独的资产。
-
当你想要导入一个图像文件作为多个2D精灵。你应该使用2D精灵编辑器从单个图形图像中定义多个精灵。Unity将编辑器中定义的每个精灵作为单独的精灵资产显示在Project窗口中。
-
当一个3D文件包含多个动画时间轴或多个剪辑时。为了处理这个问题,Unity会根据动画导入设置自动定义单独的动画时间线或剪辑。生成的多个动画剪辑在Project窗口中显示为单独的动画剪辑资产。
3.4 另请参阅
(Eu:与本节所讲内容相关的文档链接,可以不看。)
3.5 同时导入资源
默认情况下,Unity在主编辑器进程中依次导入资源。然而,Unity也支持并行导入某些类型的资源。并行导入使用多个流程同时导入资产,这比默认的顺序导入方法要快。
要启用并行导入,请转到 Edit > Project Settings > Editor,然后在Asset Pipeline部分下,启用Parallel Import复选框。

3.5.1 并行导入支持的范围
Unity的并行导入功能只支持特定类型的资源。它仅在Editor执行其标准资产数据库刷新时应用,当它检测到Project文件夹中新的或修改的资产并自动导入它们时发生。
Unity可以并行导入的特定类型的资源有:
在刷新资产数据库期间,总是依次导入其他类型的资产。(Eu:即非并行的。)
一些资产数据库API方法也遵循这个设置,如果你使用它们来导入、刷新或创建纹理或模型资产。有这些:
3.5.2 对AssetPostprocessors的影响
【Eu:这是在说什么???¿¿¿】
因为并行导入操作在Unity编辑器的单独工作实例中,任何AssetPostprocessors处理的纹理或模型导入的也将在该实例中生效,而不是在主编辑器进程中生效。
这些处理器的任何副作用都可能导致意想不到的问题。例如,如果在执行后置进程期间修改c#类上的静态变量,该修改不会影响在编辑器中运行的代码。
为后置处理器编写的任何代码都应该是自包含的、确定性的,并且不应该改变它所运行的上下文。例如,它不应该更改Editor设置或在磁盘上创建新资产。
遵循这些规则可以帮助您的处理器代码避免并行线程问题,并确保结果始终一致。
3.5.3 控制导入工作流程
在Asset Pipeline设置中,有三个设置允许您控制导入工作流程的行为。这些设置是特定于项目的。设置位置就在开启并行导入按钮的下方,如图:

-
Desired Import Worker Count:导入管道认为并行运行时,最佳的导入工作流数量。
-
Standby Import Worker Count:要保留的工作流的最小数量,即使它们处于空闲状态。如果有更多的工作流,Unity关闭已经闲置了一段时间的导入工作流,以释放系统资源。这个属性允许你管理Unity在一些工作流空闲时如何平衡系统资源,与启动新的导入工作流所花费的时间进行比较。如果您频繁地迭代模型、动画或纹理工作,并且因此频繁地导入成批的模型或图像文件,那么通过增加这个值,您可能会看到导入性能的改进。
-
Idle Import Worker Shutdown Delay:在关闭空闲导入工作流之前等待的时间(以秒为单位)。
你也可以为新项目设置所需导入工作流数量的默认值。通过Edit > Preferences > Asset Pipeline > Import Worker Count %设置,如图:

当你创建一个新项目时,Unity使用Import Worker Count %值来分配你的项目所需的Import Worker Count值为你系统中可用的逻辑核心数量的百分比。
例如,如果您的系统有16个逻辑核心,并将此首选项设置为25%,则新项目的所需导入工作流计数为4。如果将此值设置得太高,则导入工作流(进程)需要与其他进程和系统资源(如读写文件)竞争。默认值25%适用于大多数情况。【Eu:进程吗,感觉应该是线程。】
4 支持的资源类型
Unity支持许多不同类型的资产和最常见的图像文件类型,包括BMP, TIFF, TGA, JPG和PSD。
如果你在Assets文件夹中保存图层ps (.psd)文件,Unity会将它们导入为扁平图像。您可以找到更多关于将图像导入为纹理或将图像导入为精灵的信息。
有关Unity内置导入器的完整列表,支持的文件类型和支持的文件名扩展名,请参阅内置导入器。
下面列出的是一些你在开始使用Unity时可能想要使用的更常见的资产类型,以及如何使用它们的链接。
常用资产类型
-
3D Model Files:Unity支持FBX文件格式,这意味着您可以从任何支持FBX的3D建模软件导入数据。Unity本身也支持导入SketchUp文件。有关Unity支持的3D建模软件列表,请参阅模型文件格式。3D模型文件可以包含许多类型的资产,如网格,动画,材料和纹理。有关导入3D模型文件的详细信息,请参阅导入模型。Unity也支持SketchUp和SpeedTree格式。
-
Image files:Unity导入图像文件作为纹理。Unity支持最常见的图像文件类型,如BMP, TIF, TGA, JPG和PSD。如果你将图层ps (.psd)文件保存在Assets文件夹中,Unity会将它们导入为扁平图像。阅读更多关于导入纹理的信息。
-
Audio files:Unity支持多种音频文件格式。通常最好导入未压缩的音频文件格式,如.wav或.aiff,因为在导入过程中,Unity会应用在导入设置中指定的压缩设置。阅读更多关于导入音频文件的信息。
-
Text, HTML, XML, JSON:Unity可以从文件中导入任意数据,允许您存储和使用来自外部来源的数据。这些都是由文本资产导入器处理的。
-
Plug-ins and code-related assets:你可以将托管和本地插件作为资产(如.dll文件)放入你的Unity项目中,以扩展你的游戏或应用程序的功能。Unity还支持


7858

被折叠的 条评论
为什么被折叠?



