# uuid与依赖关系
当工具导入资源的过程中,也会给资源加一些额外的信息,放到meta文件里面。
- 给一个文件赋予一个唯一的id:uuid。
- 并且创建一个.meta文件,放在对应的文件旁边。
- 并且将uuid以及importSetting都放在这个meta文件里面。
- 然后再根据meta里面的信息和资源文件本身去进行编译。
# uuid与依赖关系
uuid是表示一个文件的唯一id。工具会持续的监听文件是否被添加到assets目录。一个新的资源被放置到工具的assets目录下面的时候,会分配一个随机值作为它的uuid,并且把内容保存在meta文件里面,每次分配都是重新生成的。
# 资源间依赖关系
uuid也被用来表达资源间依赖关系。资源内记录着其他资源的uuid,这种我们叫做资源间静态依赖。工具可以分析出资源与资源的关系,去实现自动分包等能力。因为编译流程可能会将一个资源生成多个文件,那么也会根据原始的uuid,加上固定的随机数种子,去生成确定的新uuid。比如png如果作为一个texture导入,那么编译后在temp目录下面会同时存在png和texture两个文件,texture的uuid是根据png在assets目录的uuid混了一个固定变量去生成的,这样能保证不同的电脑能始终生成一样的uuid给texture,从而保持正确的依赖。一个material资源如果想要使用一个texture资源,那么在material里面记录着的其实是texture的uuid,而不是png的uuid,在Assets目录下其实找不到这个texture的uuid。
# meta文件
工具会针对所有的资源文件,包括文件夹都生成一个对应的meta文件。里面记录者uuid以及对应的import setting。importSetting可以在Project窗口选中后,在inspector窗口看到,并且可以修改。
重要:Project窗口里面是将meta文件隐藏的,在Project窗口里面移动资源,工具会默认把meta一起移动。在操作系统的文件管理器里面移动文件的时候,一定要记得将meta跟随一起移动,否则工具会重新对文件分配新的uuid,导致依赖丢失。如果主动把meta删掉,那么也会重新分配一个新的uuid。当依赖丢失的时候就必须手动重新在工具内建立指向关系。
当多人开发的时候,可能不同的人在不同的电脑各自都会放同一个png文件到同一个位置,但是他们的meta文件中的uuid是不一样的。那么在提交到版本管理工具的时候,比如svn,git,就会产生冲突,这里要开发者需要选择其中一个uuid作为这个文件真正uuid,同时修正所有引用这个png的资源。这里建议尽量不要不同的人上传同一个文件。