Unity3D:资源元数据

Unity3D:资源元数据
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

资源元数据

当 Unity 导入资源时,它还会存储和管理有关资源的其他数据,例如 Unity 应使用哪些导入设置来导入资源,以及在整个项目中使用资源的位置。以下是此过程如何工作的描述:

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

任何给定资源的导入设置都会影响 Unity 处理资源的方式。如果修改资源文件或资源的任何导入设置,Unity 将重新导入资源。有关更多信息,请参阅资产及其导入设置。

唯一 ID

Unity 编辑器经常根据它已知的资源列表检查文件夹的内容。将资源放入文件夹时,Unity 会检测到您已添加新文件。AssetsAssets

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

这些 ID 通常在编辑器中不可见,

元文件

下图显示了 Unity 为项目文件夹中的每个项创建的文件。Unity 为资源文件和文件夹创建元文件。.metaAssets

这些文件隐藏在 Unity 的项目窗口中,默认情况下也可能隐藏在您的文件系统中(请参阅维基百科:隐藏文件和隐藏目录),因此您可能不会在 Windows 资源管理器或 Finder 中看到它们,除非您使隐藏文件在计算机上可见。

计算机上 Unity 项目中的“资源”文件夹、元文件与 Unity 中的“项目”窗口之间的关系
计算机上 Unity 项目中的文件夹、元文件与 Unity 中的“项目”窗口之间的关系Assets

此示例演示了 Unity 为项目文件夹中的每个资源或文件夹创建一个文件,因为它们显示在系统文件浏览器中。但是,这些文件在“项目”窗口中不可见,因为它们默认处于隐藏状态。要使它们可见,请打开模式项目设置并启用可见图元文件.metaAssets.meta

Unity 为资源创建 文件时,会将此资源的 ID 写入 文件,并将 文件与资源文件存储在同一位置。.meta.meta.meta

这些文件包含分配给资源的唯一 ID,以及您在“项目”窗口中选择资源时在“检查器”窗口中看到的所有导入设置的值。例如,对于纹理,这包括纹理类型、环绕模式、滤镜模式和 Aniso 级别导入设置。.meta

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

元文件和资产文件

重要提示:元文件包含有关如何在项目中使用资源的重要信息,并且它们必须与它们相关的资源文件保持在一起。如果在 Unity 自己的项目窗口中移动或重命名资源,Unity 还会自动移动或重命名相应的 .meta 文件。但是,如果在 Unity 之外(即在 Windows 资源管理器或 macOS 上的 Finder 中)移动或重命名资源,则必须移动或重命名 .meta 文件以匹配。

如果资源丢失了其元文件(例如,如果在 Unity 外部移动或重命名资源,但不移动或重命名相应的 .meta 文件),则项目中对该资源的任何引用都将中断。在这种情况下,Unity 会注意到资源没有相应的元文件,为移动/重命名的资源生成一个新元文件,就好像它是一个全新的资源一样,并删除旧的“孤立”.meta 文件。

此过程可能会导致项目中出现重大问题。例如: * 如果纹理资源丢失其 .meta 文件,则使用该纹理的任何材质都将失去对该纹理的引用。要修复它,您需要手动将该纹理重新分配给任何需要它的材质。 * 如果脚本资产丢失其 .meta 文件,则分配了该脚本的任何游戏对象或预制件都将具有“未分配的脚本”组件,并失去其功能。要修复此问题,您需要手动将该脚本重新分配给需要它的任何游戏对象。

空文件夹、元文件和版本控制

Unity 为项目文件夹中的每个文件夹分配自己的文件。但是,某些版本控制系统 (VCS) 无法存储空文件夹。这意味着,当您在项目中添加或删除空文件夹时,VCS 会将文件存储为添加或删除,但不会存储添加或删除文件夹本身的更改,这可能会造成混淆或问题。Assets.meta.meta

为帮助解决此问题,Unity 针对空文件夹采用以下特定方式:

如果 Unity 检测到一个空文件夹不再含有相应的元文件,如果该文件夹以前有元文件,Unity 会假设元文件被另一个用户通过在 VCS 中删除该文件夹时删除,并在本地删除该空文件夹。

如果 Unity 检测到文件夹有一个新的元文件,但该文件夹在本地不存在,则 Unity 会假设新元文件是被另一个用户通过在 VCS 中添加文件夹而创建,并在本地创建相应的空文件夹。


此文由3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D:Text assets (mvrlink.com)

下一篇:Unity3D:资源数据库 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号