Unity中使用PlayerPrefs保存和读取数据,但是无法读取
代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class GameManager : MonoBehaviour
{
public static GameManager instance;
private void Awake()
{
if (GameManager.instance != null)
{
Destroy(gameObject);
return;
}
instance = this;
SceneManager.sceneLoaded += LoadState;
DontDestroyOnLoad(gameObject);
}
// Resources
public List playerSprites;
public List weaponSprites;
public List<int> weaponPrices;
public List<int> xptable;
// References
public Player player;
// public weapon weapon...
//Logic
public int pesos;
public int experience;
// Save state
/*
* INT preferedSkin
* INT pesos
* INT experience
* INT weaponLevel
*/
public void SaveState()
{
string s = "";
s += "0" + "|";
s += pesos.ToString() + "|";
s += experience.ToString() + "|";
s += "0";
PlayerPrefs.SetString("SaveState", s);
}
public void LoadState(Scene s, LoadSceneMode mode)
{
if (!PlayerPrefs.HasKey("SaveState"))
return;
string[] data = PlayerPrefs.GetString("SaveState").Split('|');
// Change Player skin
pesos = int.Parse(data[1]);
experience = int.Parse(data[2]);
// Change the weapon level
Debug.Log("LoadState");
}
}
手动输入的数据无法在重启游戏后保存,问题好像出在string[] data = PlayerPrefs.GetString("SaveState").Split('|'); 里面?在切换场景的时候应该显示“LoadState”,也不显示。求指点
SaveState在哪里执行的
我测试了一下你的代码,都能正常保存和读取数据呀
应该是程序运行,有地方执行了:
PlayerPrefs.DeleteAll();
全局搜索一下,看看是不是有测试的地方忘记删除了