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

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的生成器插件

在这里插入图片描述

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

http://www.xdnf.cn/news/8474.html

相关文章:

  • Ntfs!FindFirstIndexEntry函数中ReadIndexBuffer函数的作用是新建一个Ntfs!_INDEX_LOOKUP_STACK结构
  • Kotlin-数组,集合类以及序列
  • 解决MybatisPlus使用Druid1.2.11连接池查询PG数据库报Merge sql error的一种办法
  • 豆瓣的 PyPI 源关闭后替代方案
  • 怎样判断服务器网络质量的状态?
  • 【博客系统】博客系统第四弹:令牌技术
  • 亚马逊跨境战:解码退货率管控的底层逻辑与战术拆解
  • 论文解读: 2023-Lost in the Middle: How Language Models Use Long Contexts
  • Java与Go差别在哪
  • **代换积分法**或**变量替换法**)
  • 【论文阅读】Stop Overthinking:高效大模型推理技术综述
  • 26考研|高等代数:λ-矩阵
  • 07_分类器不确定评估
  • 京东外卖分润系统部署实操!0门槛入驻+全平台接入+自定义比例...这些人,赚翻了!
  • Terraform本地windows部署
  • 安全生态与职业跃迁
  • 相机--基础
  • [Datagear] 实现按月颗粒度选择日期的方案
  • 精益数据分析(81/126):从Timehop案例看病毒性增长的黑客式策略
  • 数据的获取与读取篇---获取数据
  • 客服中心大模型应用演进路线:从传统服务到超级智能助手的转型
  • leetcode513. 找树左下角的值:层序遍历中的深度与顺序控制之道
  • Maven 项目介绍
  • 什么是HTTP
  • FFTW图像处理入门
  • 支持电子病历四级的云HIS系统,云HIS系统源码,医院管理信息系统
  • 5月23日day34打卡
  • 日拱一卒【6】
  • IDEA 编程语言 MoonBit:为 AI 与大型系统而生,无缝调用 Python
  • 2025最好的Next.js面试题