背景:
Unity 引擎提供了许多PlayerPrefs.SetXxx
可用于保存用户数据的功能。但是,它会自动在您保存的名称后附加一个哈希值。例如,
在 Windows 平台上调用 of
PlayerPrefs.SetString("justTesting", "TEST!");
将添加一个注册表值
justTesting_h3837386411
。
问题:
我知道它实际上是djb2-xor,但我仍然很好奇哈希函数是如何实现的。通过使用我发现的 dnSpy PlayerPrefs.SetString
,它在 中实现UnityEngine.CoreModule.dll
,最终调用了一个声明为的本机方法
[NativeMethod("SetString")]
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool TrySetSetString(string key, string value);
而我被困在这里。有确实是一个字符串UnityEngine.PlayerPrefs::TrySetSetString
中.rdata
的部分UnityPlayer.dll
,但我不知道在哪里可以找到实际的代码吧。我接下来该怎么做?