tuyoogame / YooAsset

unity3d resources management system
https://www.yooasset.com/
Apache License 2.0
2.46k stars 482 forks source link

源码问题,保存补丁清单实例前为什么要先反序列化一遍? #88

Open xxl-game opened 1 year ago

xxl-game commented 1 year ago

YooAsset 版本 1.4.8

在 TaskCreatePatchManifest.cs 创建补丁清单文件这个步骤中,先 new 了一个 PatchManifest 实例 patchManifest,然后向其中填充了内容数据,然后在创建补丁清单的二进制文件时:

  1. 把 patchManifest 序列化为 bytes 文件 pkg_version.bytes
  2. 计算了文件 pkg_version.bytes 的 MD5
  3. 反序列化文件 pkg_version.bytes 得到一个新的实例存到 context。

想问的问题是,直接把最开始 new 出来的实例存到 context 中不行吗?像这样:

  1. 把 patchManifest 序列化为 bytes 文件 pkg_version.bytes
  2. 把 patchManifest 存到 context。

为什么需要一个反序列化操作才能存。 序列化 --> 计算MD5 --> 反序列化,这三个步骤会导致 PatchManifest 实例的内容发生改变吗?

gmhevinci commented 1 year ago

不会改变,直接存储也没有问题。进行反序列化也是为了验证文件的合法性。