问题记录
- 行为树文件在 u3d 5.5.1 版本上进行制作,后经历 u3d 引擎升级到 2018
- 这部分文件存在使用 String.GetHashCode 进行序列化的功能
- String.GetHashCode 在 u3d 5.5.1 中使用的是 mscorlib.dll 2.0.0.0 版本的 32 位算法。在 u3d 2018 中已经更改为 mscorlib.dll 4.0.0.0 版本的 64 位算法,计算出来的值是不一致的。
- behavior desginer 在新版本已经提供了自己的 hashCode 算法,而不是直接调用 String.GetHashCode,所以这部分文件还存在一个问题是有部分是用的旧版本插件生成的。
解决方案
- 在可正常读取的 u3d 5.5.1 版本中使用新插件对行为树文件重新生成即可。
- 虽然也可以在 u3d 2018 重新提供 32 位的 String.GetHashCode 算法,但是实际操作从 mscorlib.dll 2.0.0.0 版本提取出来的算法运算的结果和 u3d 5.5.1 版本的运算结果不一致,可能是获取的地方错了?应该用 mono 版本?