//PlayerPrefs_Script.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class PlayerPrefs_Script : MonoBehaviour
{
#region 持久化数据理论讲解段
/*持久化数据讲解 PlayerPrefs (PC、IOS、Android可用)
*
* PlayerPrefs类介绍
* · Unity提供了一个本地持久化保存与读取数据的类--PlayerPrefs.它的工作原理是以键值对的形式将数据保存在文件中,
* 这就好比给需要保存每一个数据赋予一个名称,将其成功存入本地存档中,程序就可以根据这个名称取出上次存储的数据
*
* 保存与读取数据
* PlayerPrefs类可保存和读取3种基本的数据类型,它们是浮点型、整形和字符串类型,涉及的方法如下
* · SetFloat() 保存浮点型
* · SetInt() 保存整形
* · SetString() 保存字符串
* · GetFloat() 获取浮点类型
* · GetInt() 获取整形
* · GetString() 获取字符串
*
* 简单案例:
* //保存整数
* PlayerPrefs.SetInt("分数",100);
*
* //读取数据
* PlayerPrefs.GetInt("分数");
*
*
*/
/* 讲解段以下开始注释
//记录分数的变量
private int fsNum;
//游戏开始时检测存储中是否有"分数"键 ,有的话则执行分数变量覆盖,等于读档了
private void Start()
{
//判断存储中是否有"分数"键
if (PlayerPrefs.HasKey("分数"))
{
//获取"分数"键对应的值,并赋值给fsNum
fsNum = PlayerPrefs.GetInt("分数");
}
}
private void OnGUI()
{
GUILayout.Label("分数为:" + fsNum);
if (GUILayout.Button("点击记录分数"))
{
fsNum++;
}
if (GUILayout.Button("点击保存分数并进入下一关"))
{
//存储分数
PlayerPrefs.SetInt("分数", fsNum);
print("保存成功,分数为:"+ fsNum);
//下一关场景切换
//SceneManager.LoadScene 参数给的是 发布游戏时,设置的场景顺序索引 或者常用的是指定场景名(指定场景名是必须一致!!)
SceneManager.LoadScene("Start");
}
if (GUILayout.Button("点击清空分数"))
{
//清空所有的持久化存储
//PlayerPrefs.DeleteAll();
//清空对应的键的持久化存储
PlayerPrefs.DeleteKey("分数");
fsNum = 0;
print("已清除分数!!");
}
}
讲解段结束
*/
#endregion
#region 持久化实际游戏案例--脚本挂在人物模型的父物体上
/* 持久化实际游戏案例--脚本挂在人物模型的父物体上
*
* 案例1:任务换装备(服装)
* 1.制作一个开始界面分别有三个可以更换角色服装的按钮,并让用户点击选择更换某个服装
* 2.点击“保存并进入游戏”,按钮即可进入正式的游戏场景,在游戏场景诞生角色,并且,角色身上的装备(服装)是在开始界面保存的装备效果。
*
*/
//定义人物现有的服装变量--材质球类型
public Material cloth;
//定义所有的服装数组--材质类型,需要在unity面板操作挂载
public Texture[] allCloth = new Texture[4];
//public Material[] allCloth = new Material[4];
private void Start()
{
//获取当前人物的材质球组件
cloth = this.GetComponentInChildren<SkinnedMeshRenderer>().material;
//游戏开始时先清空存储缓存
PlayerPrefs.DeleteKey("Cloth");
}
private void OnGUI()
{
GUILayout.Label("现在的服装名是: " + cloth.mainTexture.name);
if (GUILayout.Button("换装1"))
{
//更换材质
cloth.mainTexture = allCloth[0];
//存储更换的数组位置
PlayerPrefs.SetInt("Cloth",0);
}
if (GUILayout.Button("换装2"))
{
cloth.mainTexture = allCloth[1];
PlayerPrefs.SetInt("Cloth", 1);
}
if (GUILayout.Button("换装3"))
{
cloth.mainTexture = allCloth[2];
PlayerPrefs.SetInt("Cloth", 2);
}
if (GUILayout.Button("换回原始的服装"))
{
cloth.mainTexture = allCloth[3];
PlayerPrefs.SetInt("Cloth", 3);
}
if (GUILayout.Button("保存进入下一关"))
{
//下一关场景切换
//SceneManager.LoadScene 参数给的是 发布游戏时,设置的场景顺序索引 或者常用的是指定场景名(指定场景名是必须一致!!)
SceneManager.LoadScene("Start");
}
}
#endregion
}
|