首页 文章

保存/加载数据Android设备,Unity,C#[重复]

提问于
浏览
1

这个问题在这里已有答案:

嘿,我想现在制作Android游戏我的步骤是保存/加载数据 . 现在我在我的电脑上测试一切都很完美,游戏创建了保存文件夹并保存了我的bool . 然后我把Apk放在我的Android设备上 . 当游戏必须拯救布尔时,它就会停滞不前 . (不是冻结框架,但它不会继续) .

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

保存(如果你赢了一个级别,它将启动方法):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;
             }

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

我只知道这种方法来保存数据,如果你现在更好的一个,如果它继续安卓,请告诉我!

1 回答

  • 1

    你是 only 检查玩家是否有 played 等级 . 不要让这复杂化 . 在类PlayerPrefs中使用 Unity built 来检查玩家是否具有 played 等级 .

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

    当玩家玩过等级1时,您可以创建一个名为"hasPlayedLevel1"的按键并将 1 写入其中,如下所示:

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

    稍后在游戏中或当玩家 closesre-opens 游戏时,你可以检查玩家是否有 played 的等级 .

    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);
    

相关问题