Version: 2020.2
Unity 快捷键
常见资源类型

资源工作流程

《Unity 用户手册》的这一部分概要讲述 Unity 中的资源使用原则,包括以下主题:

另请参阅该手册其他部分中的以下相关主题:

资源表示什么

资源表示可以在项目中使用的任何项。资源可能来自 Unity 外部创建的文件,例如 3D 模型、音频文件、图像。还可以在 Unity 中创建一些资源类型,例如 ProBuilder 网格 (ProBuilder Mesh)、Animator Controller、混音器 (Audio Mixer) 或渲染纹理 (Render Texture)。

Unity 如何导入资源

Unity 会自动导入资源并管理有关这些资源的其他数据,例如应使用哪些导入设置来导入资源,以及资源在整个项目中的使用位置。下面介绍了此过程:

  1. Unity 为资源分配唯一 ID
  2. Unity 创建 .meta 文件
  3. Unity 对资源进行处理

在某些情况下,Unity 在导入单个资源文件时可能会创建多个资源。有关更多信息,请参阅导入复杂资源

导入设置可以影响 Unity 对资源的处理方式。有关更多信息,请参阅资源及其导入设置

唯一 ID

Assets 文件夹中放置诸如纹理之类的资源时,Unity 将检测到已添加新文件,因为 Editor 经常根据已知的资源列表来检查 Assets 文件夹的内容。

Unity 找到新文件时会向此资源分配唯一 ID。这是 Unity 在内部使用的 ID,用于引用资源,以便 Unity 可以移动或重命名此资源而不会破坏任何内容。

.meta 文件

计算机上 Unity 项目中的 Assets 文件夹与 Unity 中的 Project 窗口之间的关系
计算机上 Unity 项目中的 Assets 文件夹与 Unity 中的 Project 窗口之间的关系

此示例表明,Unity 为项目的 Assets 文件夹中的每个资源或文件夹创建了一个 .meta 文件,就像它们出现在系统文件浏览器中一样。然而,这些 .meta 文件在 Project 窗口中不可见,因为默认情况下,它们会被隐藏。您可以显示这些文件,方法是从 Mode 项目设置中选择 Visible Meta Files

Unity 为资源创建 .meta 文件时,会将此资源的 ID 写入 .meta 文件,并将 .meta 文件与资源文件存储在同一位置。.meta 文件必须与其相关的资源文件位于相同位置,因为它包含该资源的 ID。如果在 Project 窗口中移动或重命名某个资源,Unity 会自动移动或重命名相应的 .meta 文件。然而,如果在 Unity 之外移动或重命名某个资源(例如,通过系统的文件浏览器进行此操作),请在移动或重命名 .meta 文件时确保匹配。

如果资源丢失其 .meta 文件(例如,如果在 Unity 的 Project 窗口之外移动或重命名该资源,但未更新其 .meta 文件),则对该资源的任何引用都会中断,并且 Unity 会为资源生成新的 .meta 文件,就好像它是另一个资源一样,同时还会删除旧的“孤立”.meta 文件。

例如,在纹理资源丢失其 .meta 文件的情况下,使用该纹理的任何材质都不再引用该纹理。要修复此问题,必须手动将该纹理重新分配给任何需要该纹理的材质。

同样,附加到游戏对象(或预制件)的脚本资源丢失其 .meta 文件时,该游戏对象将失去脚本的功能,最终将成为“unassigned script”组件。要修复此问题,必须手动将脚本重新分配给该游戏对象。

资源处理

Unity 读取并处理您添加到 Assets 文件夹的任何文件,将文件内容转换为可直接用于游戏的内部数据。资源文件本身保持不变,内部数据存储在项目的 Library 文件夹中。

通过使用资源的内部格式,Unity 可以准备好可直接用于游戏的资源版本,以便在 Editor 中在运行时使用,同时将未修改的源文件保留在 Assets 文件夹中。使内部格式与资源文件分开,意味着您可以快速编辑它们并让 Editor 自动获取更改。例如,Photoshop 文件格式很方便,可以将 .psd 文件直接保存到 Assets 文件夹中,但移动设备和 PC 显卡等硬件不能直接处理该格式来渲染为纹理。

Unity 将资源的内部表示形式存储在 Library 文件夹中,该文件夹类似于缓存文件夹。作为用户,切勿手动更改 Library 文件夹,尝试这样做可能会给 Unity Editor 中的项目带来负面影响。但是,只要该项目未在 Unity 中打开,就可以安全删除 Library 文件夹,因为 Unity 可以通过 AssetsProjectSettings 文件夹重新生成其所有数据。这也意味着不应将 Library 文件夹纳入版本控制。

导入复杂资源

有时,Unity 在导入单个资源文件时会创建多个资源。例如,在以下情况下可能会这样做:

导入情形: Unity 处理文件的方式:
3D 文件(例如 FBX 文件)定义材质或包含嵌入的纹理时。 Unity 将材质和嵌入的纹理提取为单独的资源。
需要将图像文件导入为多个 2D 精灵时。 使用 2D 精灵编辑器 (Sprite Editor) 从单个图形图像定义多个精灵。在此情况下,Editor 中定义的每个精灵将在 Project 窗口中显示为单独的精灵资源。
一个 3D 文件包含多个动画时间轴或多个剪辑时。 Unity 会根据其动画导入设置来自动定义单独的动画时间轴或剪辑。生成的多个动画剪辑将在 Project 窗口中显示为单独的动画剪辑资源。

资源及其导入设置

除了分配给资源的唯一 ID 外,.meta 文件还包含您在 Project 窗口中选择资源时在 Inspector 窗口中看到的所有导入设置的值。对于纹理,这包括 Texture TypeWrap ModeFilter ModeAniso Level 导入设置。

如果更改资源的导入设置,则这些新设置将保存到资源附带的 .meta 文件中。随后,Unity 将根据更新的设置来重新导入资源,并在项目的 Library 文件夹中更新相应导入的“游戏就绪”数据。

备份项目或将项目添加到版本控制库时,应包括 Unity 主项目文件夹,其中包含 AssetsProjectSettings 文件夹。Unity 依靠这些文件夹中的信息来重新导入您的资源并重新构建您的游戏或应用程序。不得备份 LibraryTemp 文件夹,也不要将其置于版本控制下。

Unity 快捷键
常见资源类型