zoukankan      html  css  js  c++  java
  • Unity3D中的meta文件笔记

    最近在工程项目中发现,在自己的电脑上没有问题的场景,在同事的电脑上就会出问题。问题就是场景中引用到的script、prefab总是会出现Unity找不到的情况(显示“Missing xxx”)。最终发现原来是我们一开始设置的git里面,就直接移除了对.meta文件的追踪。后来在.gitignore中移除了相应的忽略设置后,重新上传文件,问题得到了解决。

    .meta文件的作用

    在Unity中,每次我们创建一个prefab、导入文件的时候,Unity都会自动生成为这个prefab、资源文件生成一个独特的ID,这是为了方便Unity进行资源管理,在你重命名、移动资源的时候也能能够实时更新其他对这个资源的引用。例如你创建了一个prefab,prefab里面有一张图片。此时你更改了图片的名称,重新打开prefab查看(当然,旧版本的Unity需要移动到场景中才能查看,不能直接打开),就会发现你在完全没有更新图片的引用的情况下,Unity自动完成了相关资源的更新。而这就依赖Unity对每一个导入的资源、自己制作的Prefab生成唯一的ID来进行管理。

    通常我们称这个ID为GUID,而这个GUID通常就保存在与资源文件同名的.meta文件中。如果GUID丢失,那么很可能可能相关引用就会失效。

    .meta文件其实是个文本文件,你可以直接通过文本编辑工具(如VS Code)打开它,例如:

    image

    可以看到这个文件对应的GUID。其他的信息我们这里暂时不管,主要与导入设置相关。

    如果你让Unity强制以文本形式保存prefab,然后用文本编辑器打开来看,还可以看到其引用的资源的GUID,这保证了Unity能够在这些资源更改了名字或者被移动到其他文件夹的时候找到它们。

    但是,如果你是在Unity外面,例如在Finder(mac的资源管理器)或者文件管理器里面修改了这些资源的名字,那么就需要将.meta文件也手动修改名字以确保.meta文件的名字与资源名字保持一致,否则可能会导致引用失效。

    总结下:.meta文件主要保存了相应的文件的GUID,这是Unity用于资源管理的,每个资源独一份的ID,prefab中对资源的引用就依赖GUID和.meta文件来实现。这就是为什么在使用版本跟踪工具的时候也需要跟踪.meta文件。

    参考

    Unity 配置使 .prefab 可以文本化阅读修改
    Behind the Scenes(Unity关于meta文件的官方文档)
    What is a .meta file and why does Unity create them for all of my assets?
    Unity中.Meta文件作用详解

    本博客文章默认使用CC BY-SA 3.0协议。
  • 相关阅读:
    js object 常用方法总结
    深入研究js中的位运算及用法
    input事件中文触发多次问题研究
    景点地图开发实战
    炫酷线条动画--svg
    转:绝对干货--WordPress自定义查询wp_query所有参数详细注释
    canvas实例 ---- 制作简易迷宫(一)
    炫酷弹窗效果制作
    js排序算法总结—冒泡,快速,选择,插入,希尔,归并
    js 实现 promise
  • 原文地址:https://www.cnblogs.com/yejianying/p/the_function_of_meta_file_in_unity.html
Copyright © 2011-2022 走看看