【问题标题】:Unity web player doesn't support the C# BinaryFormatterUnity 网络播放器不支持 C# BinaryFormatter
【发布时间】:2015-12-15 16:23:58
【问题描述】:

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

所以我想问一下,有没有在不使用 playerpref 和 binaryFormatter 的情况下存储值和加载值。

【问题讨论】:

    标签: c# unity3d webdeploy


    【解决方案1】:

    您可以使用WWW 类执行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 的人都可以在执行请求时注入虚假数据(例如通过浏览器)。也许一些密码学技术可以帮助你。

    【讨论】:

      【解决方案2】:

      简短的回答是的!

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

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

      1.制作一个字节数组, 您可以使用其他类型的序列化,例如 Google 的 ProtoBuf 和 JSON。如果只是一个简单的分数,你可以把它改成字符串,不需要序列化。重要的部分是您可以将对象更改为一系列字节,反之亦然。 (序列化和反序列化)

      2.通过简单的 TCP 连接或更高级别的方式(如 HTTP-POST 请求)发送您的数据。并在此过程中确保您的转移是安全的。

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

      【讨论】:

        猜你喜欢
        • 2016-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-13
        • 2016-10-25
        • 1970-01-01
        • 1970-01-01
        • 2016-02-29
        相关资源
        最近更新 更多