当前位置: 首页 > news >正文

20250523-关于Unity中的GUID简介(未完待续)

20250523-关于Unity中的GUID简介(未完待续)

在学习开发的过程中因为好奇,在文件资源管理器中打开Sprite源文件目录,发现Unity中的Sprite是一张张.PNG格式的图片,但是每张图片文件都有一个同名的.meta文件,本文就来简单探索一下.meta文件及GUID。

在这里插入图片描述
在这里插入图片描述

打开其中的一个.meta文件显示如下:
在这里插入图片描述


一、.Meta文件


1.是什么
.meta 文件的作用简单来说是建立 Unity 与资源之间的“桥梁”,是用于辅助管理Unity资源文件的文件。 在游戏中引用一个游戏资源,Unity 并不是直接按照文件的路径或者名称,而是使用一个独一无二的 GUID 来指向工程里该资源文件。

2.作用
1)是用于辅助管理 Unity 资源文件的文件, Unity 根据 meta 里记录的 GUID 来区分项目中的不同资源;
2).meta 还记录了一些对应资源的非常重要的信息,比如:各个资源 Inspector 的信息等。

3.内容
meta 文件一般包含了以下内容:
    GUID:上面我们说 Unity 会分配一个唯一 ID ,就是存放在这里
    MonoImporter:根据不同的文件类型,它的数据是不同的 ImprotSetting 数据,比如 Mode Improter ,Audio Improter 等等,对照 Inspector 面板就可以看懂每行数据

二、GUID是什么

    GUID 存储在 Unity 工程为每一个资源和文件生成的 meta 文件里。

    除了 GUID , meta 文件还存储了有关资源导入的信息。例如,贴图资源在导入时可以当作标准贴图、法线贴图、GUI 贴图、 cookie 或者光线贴图。这些导入设置都会被存储在 meta 文件里。

GUID 优点
    移动、重命名或者修改资源的内容,这个资源仍然可以通过 GUID 来被引用(只要 GUID 不变,资源就能够被引用。)

GUID 缺点
    必须明确的意识到 Meta 文件是被关联到特定的资源上的,如果删除了一个 meta 文件, Unity 会认为原始的资源文件已经被删除,然后为这个“ 新的 ” 资源文件生成一个新的 GUID 。这就是游戏场景中的资源引用中断的最常见原因。

三、导入资源

当把新的资源导入 Unity 时,Unity 会自动做下面这件事:
1. 分配唯一 ID
2. 创建 .meta 文件
3. 处理资源

1. 分配唯一 ID
    Unity 会维护一个自己资源列表,在将资源导入 Unity 的时候, Unity会先检测这个资源列表,然后为导入的资源分配一个唯一的 ID ,在Unity 中会使用此 ID 来引用资源。

2. 创建 .meta 文件
    Unity 在 4.2 版本后加入了 .meta 文件,如果在 4.2 以后的版本中看不到.meta 文件可以进行以下设置 :
Edit->Project Settings->Editor / VersionControl 选项中设置 Visible meta Files 选项
    经过上述行为后,打开工程目录( 在 Project 面板中,右键选择 Show in Explorer 选项 ), 就可以看到以 .meta 后缀的文件。可以看到 Unity 为 Assets 文件中的每个文件和文件夹都创建了 .meta 文件。

3. 处理资源
    Unity 会将你导入到工程中的数据进行一次转换,转换为 Unity 在编辑器运行时能识别的数据,这些数据会被存放在工程的 Library 文件中。Library 文件内的内容是由 Unity 自动生成的,所以我们不用去进行对 Library 文件的修改。在对 Unity 工程进行版本控制时,也不需要将 Library 文件加入其中。


四、GUID生成器插件的使用

  1. 下载插件
    项目网址:https://gitcode.com/gh_mirrors/un/unity-guid-regenerator

  2. 阅读插件使用说明
    在这里插入图片描述

  3. 导入插件(其实就是一个C#脚本文件)
    在这里插入图片描述

  4. 按照使用说明,为资源文件重新分配GUID
    查看修改前GUID:
    在这里插入图片描述
    修改操作:右键选择需要修改的资源文件,单击如下菜单
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

查看修改后GUID:
在这里插入图片描述
修改成功!


五、个人总结

  • 所谓GUID其实就是一串具有特定含义的字符串,在资源导入时由Unity自动分配给资源文件,用于资源定位和引用的唯一的身份码。GUID信息丢失会导致找不到资源的问题。
  • GUID与资源文件路径相关联,在文件资源管理器中移动资源文件位置,则.meta文件一定要跟着资源文件,否则自动生成新的.meta文件中的GUID会改变。(尽量在Unity编辑器的Project窗口进行文件的移动,不直接在文件资源管理器中移动,这样可以降低问题概率)
  • 在开发过程中要注意预防.meta文件丢失和.meta文件重复的问题,不轻易修改资源位置,更不要修改.meta文件。
  • 提交SVN时要把资源文件及对应的.meta文件一起提交。
  • 注意避免在非Unity环境下(比如Windows资源管理器)将资源及其.meta文件复制多份导致GUID重复的问题。正常来说副本的.meta文件的GUID要重新分配并与原版的GUID不一样,才不会产生GUID冲突。

六、参考资料

  1. https://blog.csdn.net/liweizhao/article/details/142071853
    此文就介绍得很细致,举的例子很生动。
  2. https://www.cnblogs.com/zhaoqingqing/p/5823927.html
    此文从资源(Assets)和对象(UnityEngine.Objects)关系的角度介绍了GUID以及本地ID的内涵和作用
  3. https://blog.csdn.net/gitblog_00722/article/details/144799735
    本文介绍了一种GUID的生成器插件

在这里插入图片描述

感谢您的阅读,希望本文对您有所帮助~

相关文章:

  • 车载诊断架构 --- 车载诊断有那些内容(上)
  • 解决Vue项目依赖错误:使用electron-vite重建
  • 基于vite构建的vue项目添加路由时注意要利用import.meta.glob映射构建生成后的路径
  • 一次复杂接口故障的抓包全过程:四款工具协同作战实录(含 Charles)
  • # 大模型的本地部署与应用:从入门到实战
  • kali的简化安装
  • Honeywell TK-PRS021 C200
  • 199.二叉树的右视图
  • 美团外卖霸王餐api如何对接?详细讲解
  • Trae 的核心功能介绍
  • NV066NV074美光固态颗粒NV084NV085
  • MySQL索引,存储引擎,并发控制和事务
  • 每周资讯 | 网易游戏发布会9款新品曝光;TikTok小程序测试开启
  • python与flask框架
  • 文献阅读——NeuroBayesSLAM
  • 【MySQL】 数据库基础数据类型
  • Unity EventCenter 消息中心的设计与实现
  • 蓝牙的选型、设计及测试
  • 电力设备类——如何使用YOLOv8模型对配网缺陷检数据集进行训练、评估和可视化 这个配网销钉缺失检测图像数据集 配网缺陷检测图像数据集 配网缺陷
  • Don’t Shake the Wheel 论文阅读
  • 云信网站建设/世界互联网峰会
  • jsp做网站教程/优化培训内容
  • 怎么找网站开发公司/最好用的搜索神器
  • 网站建设安排/自动秒收录网
  • 中国十大电商公司/怎么关闭seo综合查询
  • 淘宝领券网站怎么做/免费seo网站推广