//数据存储--数据持久化
/*
* * 数据存储方式
* 1.PlayerPrefs
* 2.Json
* 3.xml
* 4.数据库
*
*
*场景跳转 销毁游戏对象 卸载场景 加载新场景 创建游戏对象
* 作用1 游戏存档
* 作用2 数据传输
*
* PlayerPrefs key value 键值对的形式存储
* 能存储int float string 类型的数据
*/
public class Prefafs : MonoBehaviour
{
private void Start()
{
PlayerPrefs.SetFloat("PI",3.1415f);
//如果取值时该键值对不存在会返回该类型的默认值
if (PlayerPrefs.HasKey("PI"))
{
Debug.Log("pi="+PlayerPrefs.GetFloat("PI"));
}
//删除键值对
PlayerPrefs.DeleteKey("PI");
Debug.Log("pi="+PlayerPrefs.GetFloat("PI"));
//删除所有的键值对
PlayerPrefs.DeleteAll();
//立即将缓存中的数据写入数据库
PlayerPrefs.Save();
}
}
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
/*
*存储玩家数据 玩家名字 分数
* 用空格来区分一个玩家的不同数据
* 用换行来区分不同玩家
* 玩家1 88
* 玩家2 100
* 玩家3 55
*
*/
public class PlayingScene : MonoBehaviour
{
private Text _text;
private int score;
private string playerData;
private void Start()
{
_text = transform.GetChild(0).GetComponent<Text>();
playerData = "玩家1 88\n玩家2 100\n玩家3 55";
PlayerPrefs.SetString("PlayerData",playerData);
}
public void Add()
{
score = score + 100;
_text.text = score.ToString();
}
public void Load()
{
int highScore = PlayerPrefs.GetInt("zuigaofen");
if (score>highScore)
{
PlayerPrefs.SetInt("zuigaofen",score);
}
SceneManager.LoadScene("Second");
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class PlayinSecond : MonoBehaviour
{
private Text _text;
private void Start()
{
_text = transform.GetChild(0).GetComponent<Text>();
if (PlayerPrefs.HasKey("zuigaofen"))
{
_text.text =( PlayerPrefs.GetInt("zuigaofen")).ToString();
}
//读取玩家数据
string playerData = PlayerPrefs.GetString("PlayerData");
string[] datas = playerData.Split('\n');
foreach (var item in datas)
{
Debug.Log(item);
string[] itemStrs= item.Split(' ');
//解析玩家数据
string name = itemStrs[0];
int score = int.Parse(itemStrs[1]);
}
}
public void Load()
{
SceneManager.LoadScene("Playing");
}
}