PlayerPrefs是Unity提供的一种简单而有效的数据持久化方案,它没有XML那么强大,但是适合用来做小项目。
在Mac OS X上PlayerPrefs存储在~/Library/PlayerPrefs文件夹,名为unity.[company name].[product name].plist,这里company和product名是在Project Setting中设置的,相同的plist用于在编辑器中运行的工程和独立模式.在Windows独立模式下,PlayerPrefs被存储在注册表的 HKCU\Software\[company name]\[product name]键下,这里company和product名是在Project Setting中设置的.
说说PlayerPrefs类函数
SetInt
设置由key确定的偏好值。
GetInt
如果存在,返回偏好文件中key对应的值。
SetFloat
设置由key确定的偏好值。
GetFloat
如果存在,返回偏好文件中key对应的值。
SetString
设置由key确定的偏好值。
GetString
如果存在,返回偏好文件中key对应的值。
HasKey
如果key在偏好中存在,返回true。
DeleteKey
从偏好中删除key和它对应的值。
DeleteAll
从偏好中删除所有key。请谨慎使用。
下面具体说吧
建立场景,添加一个Cube
下面就是写代码测试了
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour {
string key = "objInfo";
string data;
void Start ()
{
if (PlayerPrefs.HasKey (key))
{
data = PlayerPrefs.GetString(key);
string[] s = data.Split(',');
Vector3 v = new Vector3(float.Parse(s[0]), float.Parse(s[1]), float.Parse(s[2]));
transform.localScale = v;
}
}
// Update is called once per frame
void Update ()
{
if (Input.GetKeyDown(KeyCode.F ))
{
string s = transform.localScale.x + "," + transform.localScale.y + "," + transform.localScale.z;
PlayerPrefs.SetString(key ,s );
Debug.Log("Saved!");
}
}
}
这段代码的作用是当按下f键之后保存当前Cube的大小。先获取游戏对象的大小然后按照一定的格式组织成string,将string存入PlayerPrefs。在游戏一开始运行的时候获取string然后解析出大小信息并设给游戏对象。
在编辑器了调整Cube
调整完成之后,我们按F键,然后数据被存储下来。
然后我们重新运行程序,刚刚的大小就会被重设回去。