Unity GUID
Unity GUID
前言
最近在工作中遇到了项目中分批次打的AB包做热更新时出现丢图的问题,后来逐步定位到图集的guid发生变化了。在此正好总结一下Unity的guid相关的内容。
概念
guid是资源的唯一标识符,Unity用它来记录资源之间的引用关系。
local id/file id是资源内部的id,Unity用它来记录资源内部的具体引用/层级关系。
一般来说,guid和local id是成对使用的,Unity需要同时使用这两种id去查找一个资源。但由于每次需要以全部资源为检索源,数量非常多,查找开销也会大。于是为了加快查找,Unity给已加载的资源生成了一个instance id。
instance id是资源的快捷访问id(一种自增的id),Unity查找资源的时候会根据guid和local id与instance id的映射关系,直接使用instance id去查找,减少查找开销。与guid相比,instance id只由数字组成;与local id相比,instance id位数更短。
通俗来说,guid就好比类名,只能存在一个类;local id就好比实例名,可以存在多个实例;instance id就好比快捷方式,不用查找,点一下就出来了。
资源文件本体没有记录该资源的guid,而是记录的local id。该资源的guid是由其对应的meta文件记录的。除此之外,资源的meta文件还记录了该资源的AB包名和导入设置等数据。
虽说资源文件不记自己的guid,但它记其他资源的guid。所谓其他资源,实际上就是它引用到的资源文件。
生成
Library目录下的metadata文件夹中存储着资源文件元数据(即.info文件,二进制文件)。
当Unity自动构建Library目录的时候,会根据项目中资源的guid来生成元数据。
当Unity创建/导入新资源时,会查找metadata文件夹中是否存在该资源的元数据。如果有就用存在元数据中的guid;如果没有就给该资源生成新的guid,并生成新的元数据。
在开发过程中,如果出现不同批次打的AB包不能找到引用资源的问题,大概率就是guid在不同批次生成的AB包中不同,从而无法根据guid找到引用资源。
引用
上面提到了资源之间的引用关系是由guid记录的。因此,可以通过guid在开发过程中检索所有资源的引用关系,以便对资源进行整理。并且如果出现引用对象加载失败的情况,并且没有发现什么大的问题,可以试着从guid的角度下手。
应用
1、批量资源替换工具。
2、资源引用检索工具。
3、…
后记
这一部分确实绕得头晕,在此记录一下,之后还要再回到这里补充点东西,复习一下。
补充
file id不完全等于local id,Unity有关id的命名一直都比较混乱,file id 又叫做 file guid,而 path id 又叫做 local id 或 local file identifier。file id在工程中用于关联到另一个资源文件,而在AssetBundle中用于关联另一个AssetBundle,而local id 或 path id 则对应到资源文件或AssetBundle中的某个具体的Object。
Unity GUID相关推荐
- Unity文件、文件引用、Meta详解
原文链接:https://blog.uwa4d.com/archives/USparkle_inf_UnityEngine.html 这是侑虎科技第381篇原创文章,感谢作者陈广忠供稿.欢迎转发分享, ...
- GUID [xxx] for asset ‘Packages/com.unity.plasticscm-cn/Editor/xxx/xxx‘ conflicts with: ‘Packages/com
Unity:使用PlasticSCM出现如下报错,且每隔一定时间会再次报此错误: GUID [xxx] for asset 'Packages/com.unity.plasticscm-cn/Edit ...
- Unity 关于GUID的一些实用例子
关于GUID的具体理解可以参考这篇文章: https://www.cnblogs.com/zhaoqingqing/p/5823927.html 这里我们就简单理解为表示Unity文件的一个唯一标识符 ...
- unity重新生成guid的插件免费
https://github.com/jeffjadulco/unity-guid-regenerator/blob/master/README.md
- Unity应用架构设计(9)——构建统一的 Repository
谈到 『Repository』 仓储模式,第一映像就是封装了对数据的访问和持久化.Repository 模式的理念核心是定义了一个规范,即接口『Interface』,在这个规范里面定义了访问以及持久化 ...
- unity 编辑器存档_Unity教程 | 自制简易的游戏存档系统
原标题:Unity教程 | 自制简易的游戏存档系统 本文将为大家分享如何在Unity中实现简单的游戏存档系统,其中不会包含太多实际的代码,仅介绍在制作过程中需要考虑与解决的问题.该系统由一个学生团队为 ...
- Unity学习笔记 - Assets, Objects and Serialization
Assets和Objects Asset是存储在硬盘上的文件,保存在Unity项目的Assets文件夹内.比如:纹理贴图.材质和FBX都是Assets.一些Assets以Unity原生格式保存数据,例 ...
- 你知道Unity IoC Container是如何创建对象的吗?
Unity是微软P&P推出的一个开源的IoC框架,最新的官方版本是2.0.Unity之前的版本建立在一个称为ObjectBuild的组件上,熟悉EnterLib的读者,相信对ObjectBui ...
- unity 开发总结
1.慎用线程,unity对线程的支持不是特别完善. 在一些网络通信,资源下载,解压文件,不得已要开线程操作的地方,需要进行线程回收. 2.不压缩的ab,比经过压缩的ab大了将近4倍. 在打包ngui的 ...
最新文章
- 刚刚,三名中国航天员奔赴太空!其中一位刚参加完博士毕业典礼!
- 机器学习笔记六:K-Means聚类,层次聚类,谱聚类
- 关于React面试题汇总
- Git for Windows 2.13.1(2) 发布,分布式版本控制系统
- linux kernel中的module_init/initcall代码导读
- Struts2输入校验
- 软件工程--第三章--需求分析
- 【已解决】打开项目Android studio 报gradle sync failed:connect time out.
- linux使用ftp命令_如何使用Linux FTP命令
- nsis出错_安装程序出现NSIS ERROR错误解决思路
- centos7阿里yum源报问题
- 计算机专业要学数值分析吗,数值计算方法 数值分析这两门课有什么区别?
- 连点器安卓手机版_【百度识图器安卓下载】百度识图器官方app下载 v3.6.0 手机版...
- 2021上半年教资综合素质——主观题
- 新东方---博客分类目录
- 计算机听课与评课活动记录表,听课评课记录表.doc
- nginx服务器access_log日志详解
- 【网络工程师】<软考中级>网络互联与互联网
- 疯子的匣子_人工智能扮演``疯子''来像孩子一样学习语法
- 有什么好用的苹果群控软件?
热门文章
- linux中zip加密压缩
- 关于Altium Designer10(AD10)原理图中文乱码变问号?的问题
- musicbox使用方法_使用Pi MusicBox收听流音乐
- 三星j7出现android,【三星GALAXYJ7评测】Android 5.1+TouchWiz 2015_三星 GALAXY J7_手机评测-中关村在线...
- NNI GridSearch示例
- 大数据开启“互联网+统计”新模式
- js 鼠标按下并移动事件
- 数据库如何理解GROUP BY子句作用
- 月薪3000,交满15年社保,能拿到多少养老金?今天统一回复
- 音频css转换代码,html5+css3酷炫音频播放器代码