CocosCtreator知识点1:项目资源目录下的meta文件
版本3.8.2
在creator的项目资源目录下,会发现每个文件都有一个同名的meta文件,在没出问题前,这类文件好像对项目的创建、生产、发布流程都没什么影响。一旦少了某个文件的同名meta文件,就可能会出现很多莫名的问题:莫名的组件资源丢失了、提示有资源冲突了、提示找不到对应的资源等一些和资源有关的问题。
meta文件
实际上、meta文件是Creator中资源管理的重要方式之一,在meta文件中保存了资源定位的唯一标识uuid等信息。在Creator引擎中,资源并不是通过资源路径来定位和管理的, 而是为每一个文件分配一个UUID(通用唯一标识符),通过这个独一无二的UUID来定位资源。这也是为什么在编辑器中可以随意的更换、移动文件而UI不受影响。
- meta文件的更新
1.当打开一个项目时,creator会去扫描项目的资源管理目录,也就是Assets目录。如果发现该目录下有哪个文件没有对应的meta文件,就会生成一个对应的meta文件。
2.当对资源管理目录下的资源进行增、删、改、移时,引擎会检测该资源是否有对应的meta文件,如果没有,也会自动生成一个对应的meta文件。这里的“增、删、改、移”有两种情况,一种是在编辑器面板中操作,一种是在文件所在目录下操作。(在编辑器外操作也是经常会出现资源丢失、资源冲突的主要原因,这个会在下面细说)。
注:个人经验,偶尔在编辑器中对资源更改时会有无法即时刷新的情况。如果遇到,可以点击资源管理面板右上角的“刷新”按钮手动进行刷新。 - meta文件的内容
上面有提到,Creator会为每个文件分配一个独一无二的UUID标识符,并存放在文件对应的meta文件中,这里分别打开一个文件夹的meta文件和一个图片的meta文件来对比查看。
图片的 meta 文件信息好像多了很多,不仅有UUID,还有图片的宽高、拼接方式、九宫格等等信息。这些不是重点,重点还是UUID,我们可以通过别的方式,比如在编辑器或图片信息中可以随意的改变其宽高、颜色、九宫格等信息,但UUID是引擎分配的用于定位该资源的唯一标识,只有在增、删、改、移时才会改变。
常见的问题
- uuid xxxxxx collision
上面说uuid是creator分配给文件的唯一标识,为什么还会出现冲突呢?这也是在不了解uuid之前踩过的坑。如果出现了uuid冲突,大概率是在编辑器外不同目录操作文件(复制、粘贴、移动)时粘贴了同名的meta文件,导致引擎无法定位到资源。
解决方法:
1.复制提示冲突的UUID字符串,打开代码编辑器在搜索框中粘贴搜索定位到冲突的文件,把meta文件删除然后重启编辑器就可以解决报错,但这种方式虽然会重新生成新的meta文件,但在ui编辑中,也就是层级管理器中引用该资源的节点会提示资源丢失,需要手动再编辑一下(把丢失图片或别的引用在拖到它原有的地方)。
2.如果有备份,或者版本管理,通过备份或版本管理恢复到上一步是最好,这也是为什么说在版本管理中要上传meta文件。
当然了,避免资源冲突的最好方式就是尽量不要在编辑器外操作(这里特指复制同名)文件。 - missing uuid xxxxxx
出现这种情况,一般都是有误删、大小写区分的同名文件。通常会在控制台有“warning”提示。和解决冲突一样,通过uuid去定位资源。然后重新编辑丢失的资源即可。
出现问题的原因实际上都是uuid出现了变动,导致冲突或引用丢失。所以在操作文件时一是避免在编辑器外操作;二是在协同合作时,版本管理不要忘记meta文件的上传和拉取。