【问题标题】:Save multiple Variables with Google play games使用 Google play 游戏保存多个变量
【发布时间】:2018-04-05 10:01:32
【问题描述】:

感谢 google play 游戏插件,我目前正在统一为手机游戏设置狂野系统。

我目前已通过此处提供的教程保存了一个值:http://resocoder.com/2017/03/10/gpg-tutorial-saved-games-code/

但是我无法保存更多的变量。

我希望根据上面的代码能够返回的不是浮点数,而是一个值表。

有人会知道我该怎么做吗?如果你不知道,能不能给我解释一下表[]字节中数据的序列化或反序列化是如何进行的?

谢谢

【问题讨论】:

  • 使用内置的BitConverter class,您可以在双精度数组(一维表)和字节数组之间来回转换。这就是你要找的吗?
  • 不仅仅是将 int 数据类型转换为数组中的字节类型,我希望修改上面的代码,以便能够保存变量列表而不是单个变量。目前,该代码允许保存一个名为“CloudVariables.Highscore”的变量并且它可以工作,但我想例如保存“CloudVariables.Highscore”和“CloudVariables.Power”,我不知道该怎么做那 。 “GameDataToString()”函数只返回“CloudVariables.Highscore”,不知道这个函数怎么能返回两个变量。
  • 这在另一种方式中是有效的,函数“StringToGameData”比较并转换数据备份以将它们重新分配给“CloudVariables.Highscore”我想确保数据备份重新分配给完整不同的变量和良好的顺序。谢谢。

标签: c# serialization save cloud google-play-games


【解决方案1】:

我知道这是个老问题,但是对于未来,这个答案应该很有用。

Unity 在 UnityEngine.JSONSerializeModule 之后支持 Json。 所以我们可以在没有 3rd 方包的情况下使用 GPGS 保留更多数据。

您可以为所有数据创建一个类。 (数据长度的深度应小于7层)

   using UnityEngine;
public class Try : MonoBehaviour
{
    string theDataWhichWillSendToCloud;
    public MyData saveJson;
    public void JsonToString()//BeforeSave
    {
        theDataWhichWillSendToCloud = JsonUtility.ToJson(saveJson);
    }
    public void StringToJson()//AfterLoad
    {
        saveJson = (MyData)JsonUtility.FromJson<MyData>(theDataWhichWillSendToCloud);
    }
}

[System.Serializable]
public class MyData
{
    [SerializeField] private float health;
    [SerializeField] private float money;
    public float Health { get { return health; } set { health = value; } }
    public float Money { get { return money; } set { money = value; } }
}

最后当你想保存数据时,调用 JsonToString() 加载时,加载后使用 StringToJson() 重新设置字符串中的数据

【讨论】:

    猜你喜欢
    • 2020-06-17
    • 1970-01-01
    • 2019-04-25
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    相关资源
    最近更新 更多