Unity本身有PlayerPrefs来做一些数据的保存和读取,也可以通过循环来做批量的读取或者保存,下面这个脚本可以方便的调用用来做上面批量的工作,比如读取一组文本数组数据和保存一组文本数组数据.
建议把这个脚本放在Standard Assets(或者Plugins)目录下,这样可以按照下面的方法方便的调用它.现在包含了下面这些命令:
PlayerPrefsX.SetVector3
PlayerPrefsX.GetVector3
PlayerPrefsX.SetIntArray
PlayerPrefsX.GetIntArray
PlayerPrefsX.SetFloatArray
PlayerPrefsX.GetFloatArray
PlayerPrefsX.SetStringArray
PlayerPrefsX.GetStringArray
保存一个向量
static function SetVector3 (key : string, value : Vector3) : boolean
//尝试保存一个物体位置 var player : GameObject;
if (!PlayerPrefsX.SetVector3("PlayerPosition",player.transform.position))//成功返回真,否则假(例如用Webplayer保存超过1M数据的时候)。
print("不能保存物体位置!");
获得一个向量
varplayer : GameObject;
player.transform.position = PlayerPrefsX.GetVector3("PlayerPosition");//如果读取的向量存在的话将会返回这个向量值。
保存一组整型数据:
//当保存Scores命名的分数时候创建一个10成员数组
var myScores = new int[10];
for (i = 0; i < myScores.Length; i++)
myScores[i] = i+1;
if (!PlayerPrefsX.SetIntArray("Scores", myScores))
print("不能保存分数!");
获得一组整型数据
staticfunction GetIntArray (key : string) : int[]
如果存在将返回这组数据,否则将返回int[0];
varscores = PlayerPrefsX.GetIntArray("Scores");
staticfunction GetIntArray (key : string, defaultValue : int, defaultSize : int) :int[]
如果不存在这组数据,将返回指定长度的数组以及每个成员都会赋予默认值.
其他函数的使用方法:
staticfunction SetFloatArray (key : string, value : float[]) : boolean
static function GetFloatArray (key : string) : float[]
static function GetFloatArray (key : string, defaultValue : float, defaultSize: int) : float[]
static function SetStringArray (key : string, value : String[]) : boolean
static function SetStringArray (key : string, value : String[], separator :char) : boolean
static function GetStringArray (key : string) : string[]
static function GetStringArray (key : string, separator : char) : string[]
static function GetStringArray (key : string, defaultValue : String,defaultSize : int) : string[]
static function GetStringArray (key : string, separator : char, defaultValue :String, defaultSize : int) : string[]
自己写的测试脚本如下:
using UnityEngine;
using System.Collections;
public classTest :MonoBehaviour {
publicint[]scores =new int[10];
//Use this for initialization
voidStart ()