c# - 保存/加载数据 Android 设备、Unity、C#

标签 c# android save unity-game-engine

<分区>

嘿,我想制作一个 Android 游戏,现在我的步骤是保存/加载数据。现在我在我的电脑上测试它一切都很完美,游戏创建了保存文件夹并保存了我的 bool 值。然后我将 Apk 放在我的 Android 设备上。当游戏必须保存 bool 时,它会静止不动。 (不是卡住帧,但不会继续)。

这里是我用来保存数据的代码:

Save(赢得关卡时会启动该方法): public void SaveData()

 {
     bool nextlevel = true;

     if (!Directory.Exists("Saves"))
         Directory.CreateDirectory("Saves");

     BinaryFormatter formatter = new BinaryFormatter();
     FileStream saveFile = File.Create("Saves/save.level." + nextScence);

     formatter.Serialize(saveFile, nextlevel);
     saveFile.Close();
 }

加载(我需要在关卡屏幕中加载以检查玩家是否玩过关卡):

             try
             {
                 BinaryFormatter formatter = new BinaryFormatter();
                 FileStream saveFile = File.Open("Saves/save.level." + level, FileMode.Open);

                 nextlevel = (bool)formatter.Deserialize(saveFile);

                 saveFile.Close();
             }
             catch (FileNotFoundException e)
             {
                 nextlevel = false;
             }

我希望你能帮助我,谢谢你的帮助

我只知道这种保存数据的方法,如果你现在有更好的方法,如果它可以在 android 上使用,请告诉我!

最佳答案

检查玩家是否玩过一个关卡。不要把这件事复杂化。在 PlayerPrefs 类中使用 Unity built 检查玩家是否玩过关卡。

http://docs.unity3d.com/ScriptReference/PlayerPrefs.html

当玩家玩过关卡 1 时,您可以创建一个名为“hasPlayedLevel1”的 key ,并向其写入 1,如下所示:

PlayerPrefs.SetInt("hasPlayedLevel1", 1); //1 for yes, 0 for no

稍后在游戏中或当玩家关闭重新打开游戏时,您可以检查玩家是否玩过关卡.

    bool hasplayedLevel = false;
    if (PlayerPrefs.GetInt("hasPlayedLevel1") == 1)
    {
        hasplayedLevel = true;
    }
    else
    {
        hasplayedLevel = false;
    }

    if (hasplayedLevel)
    {
        //Players has played this level
    }
    else
    {
        //Players has NOT played this level
    }

您可以通过将 0 写入 hasPlayedLevel1 来再次标记玩家NOT 玩过关卡。

PlayerPrefs.SetInt("hasPlayedLevel1", 0);

关于c# - 保存/加载数据 Android 设备、Unity、C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35994218/

相关文章:

C# 数据库 ConnectionString 属性尚未初始化

android - 诊断 ANR 的一般指南

c# - 显示该位置已存在文件的对话框

php - 如何在 PHP 的应用程序范围内保存数据?

c# - C# 中的自动 HTML 标签补全

c# - foreach 中的三元运算符

android - 为 MultiUserChat 添加监听器 (aSmack)

android - 为什么我得到 Android : The target server failed to respond?

ios - 删除以 开头的键的 NSUserDefaults

c# - 如何确定命名空间位于哪个程序集中?