Unity 网络播放器不支持 C# BinaryFormatter

Unity web player doesn't support the C# BinaryFormatter

我有一个存储分数的游戏,登录后它从 binaryFormatter C# 加载分数,但在 unity 编辑器和其他平台中显然 运行 但它不能在 unity 网络播放器上运行。我的 .unity3D 文件已上传到 google 驱动器并与所有人共享,任何人都可以编辑。html 文件在带有嵌入代码的 WEEBLY 网络在线主机上。

所以我想问一下,有没有不使用 playerpref 和 binaryFormatter 来存储值和加载值的方法。

您可以使用 WWW class 执行 HTTP GET/POST 请求并发送数据。

WWW www = new WWW("http://www.domain.com/send_score.php?user=23&score=42");

您还可以检索数据。

WWW www = new WWW("http://www.domain.com/get_score.php?user=23"); // The response body is an integer.
yield return www;
int score = (int)www.text;

请注意,这是不安全的。任何知道 URL 的人都可以在执行请求时注入虚假数据(例如通过浏览器)。也许一些密码学技术可以帮助你。

简答是有!

我不确定我是否理解你的问题,你想将乐谱保存在本地还是服务器上?

要通过网络发送您的对象,您需要:

1.Make 一个字节数组, 您可以使用其他类型的序列化,例如 Google 的 ProtoBuf 和 JSON。如果只是简单的乐谱,直接改成字符串即可,不需要序列化。重要的是您有办法将对象更改为一系列字节,反之亦然。 (序列化和反序列化)

2.Send 您的数据通过简单的 TCP 连接,或更高级的方式,如 HTTP-POST 请求。并确保您的传输是安全的。

如果你只想将分数保存在设备中(本地),你可以将数据序列化并写入文件,或者你可以使用Sqlite在本地使用精简版数据库。您可以使用一些安全措施来防止数据被篡改。对于你的情况,我认为 SOOMLA 框架是一个很好的解决方案。