一. 外部资源的导入
外部导入的资源主要有图片、模型(可能包含动画)、音频等。每种类型的文件都有很多种类型,如图片有png、psd、jpeg、tga等,当导入这些文件的时候Unity会将其处理问自己的数据格式YAML,保存在Library下面,同时在Assets下面在该资源文件的位置生成meta文件,记录其GUID和一些设置信息,如FBX文件的设置、图片导入后用户配置的Sprite的信息。
含有子资源的文件除了GUID外,其子资源还会被分配一些FileID,或者叫LocalID,GUID + FileID在整个Assets下面是唯一的。其中每一个GUID和Library下面的文件夹一一对应,将Library下面的文件后缀添加为.asset,再放到Assets下面,就能理解什么是"Unity自己的数据格式"(YAML格式,数据都放在该文件的一个Data字段种)。平时我们遇到奇葩的资源问题或者报错问题经常ReimportAll其原理就是重新生成一遍Library下面的Unity数据格式。
这里比较复杂的是FBX,导入FBX后Unity会在Assets下面将FBX显示为一个不可编辑的Prefab,其图标是Prefab的图标加上一个白色的正方形,而且存在SubAssets,即子资源,这些资源如Mesh、AnimationClip、Avatar,显示在该不可编辑Prefab的下方。
二. 内部资源的创建
内部创建的资源全部是序列化的资源,有Prefab、Material、Shader、场景、AnimatorController、OverrideController。这些文件基本是用来保存状态信息或者配置信息。
"序列化"简单来说就是将对象的状态保存在存储设备上,类似XML或者游戏存档