-
Creator 版本: 2.4.9
-
目标平台:ALL
-
重现方式:
-
首个报错:
-
之前哪个版本是正常的:
-
手机型号:
-
手机浏览器:
-
编辑器操作系统: windows
-
重现概率: 100%
游戏内配置文件经过构建后,排序发生变化,导致md5校验失败。
这是原始排序:
经过打包后的变成这样了:
导致远程加载后json排序也不一致,最后md5就不一样。校验失败,官方能否处理一下这情况
Creator 版本: 2.4.9
目标平台:ALL
重现方式:
首个报错:
之前哪个版本是正常的:
手机型号:
手机浏览器:
编辑器操作系统: windows
重现概率: 100%
游戏内配置文件经过构建后,排序发生变化,导致md5校验失败。
这是原始排序:
导致远程加载后json排序也不一致,最后md5就不一样。校验失败,官方能否处理一下这情况
用 2.4.10 或 2.4.11 试试?有做过类似的修复
好的,我试试
构建后json,官方排序,貌似是数字字符类型的排前面,数组对象等结构的字段会排后面
哪个版本本地配置文件在构建后内容顺序没变?
为什么要变呢,我本来把游戏的配置文件(json)放resources里面,结果构建后生成的文件里面cc.JsonAsset就把我的json配置文件key顺序调整了,导致md5验证不通过。没必要变啊
官方的这个排序规则也是比较诡异,有啥特别的用处嘛,这套排序算法是什么排序算法啊?value是num,字符的key靠前,vaule是对象,数组的key靠后
能不能像txt一样,不要改动我json配置中的key排序
你好,这里是指 json 里顺序排序变化没有修复,还是说 md5 值还是会一直变化?
因为这里走的是 v8 标准的排序,数字确实会到最前面,但是这个变化应该是恒定的,每次构建的顺序都是一样的,不应该会导致 md5 计算不一样的情况出现。
之前好像就是 2.4.8 还是 2.4.9 有出一些问题会导致 md5 经常变化,但这个和排序应该是没关系的,2.4.10 以及之后应该是已经修复的了~ 
你希望保持排序是有什么特殊的需求么?
因为走了 json 处理,导致他出现了变化。而且 json 需要压缩的,这样就导致经过 js 引擎处理(stringify)后,就会出现现在这种默认排序(非标准,但已经是事实标准了)。
如果需要达到你这个目的,可能需要跳过 js 引擎的处理,可以试试改个后缀名,当成 txt 解析和使用,应该就绕过了。但引擎就不会帮忙压缩 json 了~包体可能会略微变大一些~~
这里的 md5 是构建算出来的么?
这是指什么?是平台校验失败还是你们自己游戏逻辑的校验失败?
如果是游戏的配置文件,其实也可以考虑用 js 脚本插件、或者是构建模板里放置配置文件来实现。对于正常的游戏资源,我们会精简压缩合并。
感谢您的回复!
我这是有特殊需求,我在远端也放了一份json配置。在校验md5时,因为引擎打包导致key排序变化,所以md5校验失败。
自己逻辑校验失败,放构建模板不行,因为打包后,你不确定原来的json文件被打包成什么名称了
恩,实际上我的json已经是压缩过的。唯一区别就是key排序不一致,最终导致md5计算本地和远程文件不一样
我试过txt处理,是可以的。不过我更喜欢json,游戏的阅读性更好。
方案一,我在key排序上游戏内逻辑代码进行了处理,暂时避开了这个问题。
方案二,是我自己重写到json工具,按照官方的看不太懂的生成逻辑对json文件key进行排序。
期望官方对此进行优化,根据value的值类型对其key进行排序太难理解了