【附代码】Unity中使用PlayerPrefs保存和读取数据,但是无法读取

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

全局搜索一下,看看是不是有测试的地方忘记删除了