Unity - 在游戏中保存进度?

Unity - Save Progress In Game?

您好,我正在使用 Unity3d 创建一个小游戏。但是现在我无法保存一些变量。现在我使用下面的代码

void Awake(){
proiettili  = PlayerPrefs.GetFloat ("PallottoleOgniSecondo");
}

void OnApplicationQuit(){
    PlayerPrefs.SetFloat ("PallottoleOgniSecondo", proiettili);
    PlayerPrefs.Save();
}

这样我可以保存变量,但只有当我尝试 unity 时,如果我尝试在 Android 上不起作用。 你知道我该如何解决吗?

对于名为 MyClass

的示例 class,这就是您的做法
using UnityEngine;
using System.Collections;
using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;

[Serializable]
public class MyClass {

    public int myInt;

    public void Save(){
        BinaryFormatter bf = new BinaryFormatter();
        FileStream file = File.Create (FilePath());
        bf.Serialize(file, this);
        file.Close();
    }

    public void Load(){
        if(File.Exists(FilePath())){
            BinaryFormatter bf = new BinaryFormatter();
            FileStream file = File.Open(FilePath(), FileMode.Open);
            MyClass loaded = bf.Deserialize(file) as Brochure;
            myInt = loaded.myInt;
        }
    }

    static string FilePath()
    {
        return Application.persistentDataPath + "/myClass.dat";
    }
}

你应该这样试试

  PlayerPrefs.SetInt("score",ScoreManager.score);
  PlayerPrefs.Save();
  score=PlayerPrefs.GetInt("score");

我已经在我的 Web 和 WebGL 构建项目中尝试过这个,如果你需要了解序列化,我可以给你一个例子

检查您对 Android 项目的权限,如果您添加了 "android.permission.WRITE_EXTERNAL_STORAGE"。