美文网首页奇哥Unity
Unity的metadata分析

Unity的metadata分析

作者: 慢慢来比较快_ | 来源:发表于2018-04-18 10:43 被阅读0次

    1. metadata的名字是*.meta里的guid。

    2. metadata是给编辑器使用的,跟inspector有关,跟打包assetBundle无关。

    3. 因为metadata跟inspector有关,如果手动删除了,那么会导致编辑器中无法识别该资源。

    4. 当metadata被手动删除后,如果该资源正在打开,则可以通过修改保存来重新生成metadata。如果没有被打开,那则需要重新打开编辑器,或者修改.meta文件来让metadata重新生成。

    5. 如果*.meta里的guid发生变化,旧的metadata会被删掉,然后创建新的。

    可以推断,在unity启动时,会检查metadata是否完整。当选中资源时,会加载metadata到内存中,并且一直维护着,保证metadata与资源匹配。

    资源的meta文件中的guid,如果在当前工程存在相同的guid时,会被自动修改成一个新的guid。(这是.meta文件被自动修改的一个原因)

    无论怎么操作metadata,都不会影响bundle的生成。(试过把metadata删掉/清空文件内容)

    我们遇到一个无法解释也不好重现的问题,在打包机上,会打出只有manifest,却没有bundle,而且manifest里的crc值为0。删掉metadata后,重新打包,则一切正常。只能以后再观察。

    当前的处理方法是在打包bundle后,检查manifest是否也存在同名的bundle,如果出现manifest但缺少bundle,则中断打包流程。

    补充一点,路径Library/assetDatabase3,是类AssetDatabase的数据支撑。我本来猜测是它保证了mete被删除后,仍能创建回拥有相同guid的meta文件。

    但是测试后发现,单独删除它,在重启unity后会自动生成回来,而且被删的meta也会恢复回来,guid不变。

    但是删除整个Library,即便Library重建回来,但是被删的meta再创建出来后,guid不再一样。

    相关文章

      网友评论

        本文标题:Unity的metadata分析

        本文链接:https://www.haomeiwen.com/subject/yfwaxftx.html