导入资源时Unity的内部处理

  重要提示:*.meta文件必须匹配并且与它们对应的资源文件保存在一起。如果你在Unity编辑器的工程窗口中移动或者重命名一个资源,Unity也会自动移动或者重命名相应的.meta文件。如果你在Unity的编辑器外部(比如Windows资源文件夹,Mac的Finder文件管理器)中移动或者重命名一个资源,你必须同时移动或者重命名对应的.meta*文件。

2. 生成资源对应的.meta文件

资源的唯一ID就存储在.meta文件中,如果.meta丢失了,则对此资源的所有引用都会丢失。

另外,当前资源的导入配置信息也会存储在.meta中。例如,贴图的类型,压缩程度,最大尺寸等。

  1.分配一个唯一的ID

4. 生成多份资源

有时导入的资源中包含有其它资源,则Unity将会把这些内部资源给解出来,生成单独的文件。例如,模型文件中包含了内嵌材质,贴图,动画。则会生成独立的材质,贴图,动画文件。

  举个例子,在纹理资源丢失它的.meta文件的情况下,任何引用了该纹理资源的材质将丢失对这个纹理的引用。你必须手动添加任何材质对该纹理的引用。

3. 处理资源

当资源导入后,Unity会按规则将此资源转换成内部资源。源文件是不会变的,处理后的资源存储在Library中。

注意:如果没有明确地启用这些功能的话,Unity 4.2或者更早的版本创建的工程可能没有.meta文件。删除这些工程的Library文件夹会导致数据丢失并且永久的工程损坏,因为资源生成的内部格式文件和对应的.meta文件都存储在Library文件夹中。

1. 生成资源的唯一ID

这个ID用来唯一标识此资源,用来确定对其的引用。

  随着分配给资源的唯一的ID,.meta文件包含了所有你在工程窗口中选择一个资源时的导入设置(import settings)的值。对于一张贴图,它的导入设置就包含了贴图类型,循环模式,过滤模式,各向异性等级。

工程备份

只需要备份工程中的Assets,ProjectSetting目录即可。
Library, Temp等目录无需备份,重新导入工程时会重新生成。

https://docs.unity3d.com/560/Documentation/Manual/BehindtheScenes.html

  当备份,或者添加一个工程到版本控制仓库(Repertory)的时候,你应该包含Unity的主工程文件夹,里面包括AssetsProjectSettings文件夹(不需要包含TempLibrary文件夹)。所有这两个文件夹的信息对于Unity工程的运行都是至关重要的。

  你会注意到上面的图片中,在Assets文件夹下,文件系统中每一个资源和每一个文件夹都有一个对应的.meta文件。这些文件在Unity的工程窗口中是看不到的。Unity为每一个资源创建这些文件,但它们默认情况下是看不到的,所以你在Explorer / Finder 下也是看不到的。你可以通过在Unity中设置它们能够被看见。设置如下:Edit > Project Settings > Editor > Versions Control  , Mode : Visible Meta Files.

    这种情况,多个动画片段在工程目录下会以几个分开的动画资源的方式显示。

  有些资源文件会创建几个资源文件,这可能发生在以下的情况:

  首先Unity为资源分配一个唯一的ID。Unity在内部使用这个ID去引用资源,意味着资源可以被移动或者重命名,引用都不会被破坏。

  • 一个图片文件导入成一个精灵(sprite

本篇文章翻译自Unity的官方文档,原文地址:

  3.源资源被处理了

  2.创建一个.meta文件

  在脚本资源丢失它的.meta文件的情况下,任何引用了该脚本的游戏对象或者预制体(Prefab)都变成“unassigned”组件,同时会丢失这个脚本的功能。你必须手动再指定这些物体对该脚本的引用。

  如果一个资源丢失了对应的.meta文件(比如你在Unity编辑器外部移动或者重命名一个资源,但是没有移动或者重命名相应的.meta文件),导致任何对该资源的引用破坏掉。Unity会生成一个新的.meta文件重新引用该资源,就好像这个资源是重新导入的,同时删除之前丢失了引用的.meta文件。

  当你在Assets文件夹中放置一个资源,比如一张贴图。Unity首先会检测到一个新的文件被添加进来了(编辑器会频繁地检查Assets文件夹的内容与已知内容清单对比)。

  • 一个包含有多个动画时间的3D文件,或者在动画导入设置的时候拥有多个分开的动画片段

  这种情况下,定义的材质和嵌入的贴图在Unity中会提取为几个分开的资源

  

  • 一个3D文件,比如FBX文件,定义了材质亦或包含了贴图。

你电脑中的工程资源文件和Unity工程窗口的关系

  Unity给每个资源分配的ID存储在旁边的.meta文件中,这个.meta文件必须与它关联的资源保持一致。

  如果你改变一个资源的导入设置,这些更改的设置就会保存在相应的.meta文件中。资源会根据你的新设置重新导入资源,对应的 “game-ready” 资源会在工程的Library文件夹下更新。

  当Unity导入资源的时候发生了什么?

  Unity自动导入资源的同时为你管理这些资源产生的额外数据,例如导入资源的设置、资源如何在工程中被使用。下面来说明这个过程是如何进行的。

有时候导入一个资源会创建多个资源

  使用内部格式的资源能够允许Unity在编辑器中实时使用游戏素材,保持Assets文件夹下的资源未被改变,以便你能在编辑器中快速地修改和自动更改这些资源。例如,Photoshop的文件格式可以很方便地与Unity协同工作,能够直接放进你的Assets文件夹里,但是像移动设备和PC图形卡这样的硬件设备不能直接用这种格式去渲染贴图。所有的资源的Unity内部数据特征存储在Library文件夹下,你可以认为这就相当于缓存文件夹。作为一个使用者,你不应该手动去更改Library文件夹,试图这样做可能会影响项目在Unity编辑器中的功能。然而,删除Library文件夹总是安全的(当工程没有在Unity中打开的时候),因为所有这个文件夹的数据都是从AssetsProjectSettings这两个文件夹里的数据生成的。这也就意味着Library文件夹不应该包含在版本控制中。

  

导入设置会改变对资源的处理

  一张单一的图片通过使用Unity的精灵(sprite)编辑器有可能被定义成几个精灵文件。这种情况,在工程窗口中(Project Window)每一个编辑器定义的精灵都会分开成为一个单独的精灵资源。

  Unity读取并且处理任何你添加到Assets文件夹下的文件,将文件内容转换为内部游戏就绪( game-ready)版本的数据。但实际源资源本身并没有被修改,同时根据Unity版本而处理和修改的数据会保存在项目的Library文件夹里面。(注:每个不同的Unity版本生成的就绪资源是不一样的,这就是为什么我们在用不同版本的Unity打开同一个工程的时候会需要资源转换,具体如何转换的这里就不细讲了)

  图片 1

  

本文由金沙棋牌游戏官方网站发布于产品检测,转载请注明出处:导入资源时Unity的内部处理

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。