Unity3D教程保存或读取数据组的方法.docx
《Unity3D教程保存或读取数据组的方法.docx》由会员分享,可在线阅读,更多相关《Unity3D教程保存或读取数据组的方法.docx(13页珍藏版)》请在冰豆网上搜索。
Unity3D教程保存或读取数据组的方法
Unity3D教程:
保存或读取数据组的方法
Postedon2013年02月05日byU3d/Unity3D基础教程/被围观195次
Unity本身有PlayerPrefs来做一些数据的保存和读取,也可以通过循环来做批量的读取或者保存,下面这个脚本可以方便的调用用来做上面批量的工作,比如读取一组文本数组数据和保存一组文本数组数据.Unity3D教程:
Unity3D实用小功能
建议把这个脚本放在StandardAssets目录下,这样可以按照下面的方法方便的调用它。
现在包含了下面这些命令:
PlayerPrefsX.SetVector3
PlayerPrefsX。
GetVector3
PlayerPrefsX。
SetIntArray
PlayerPrefsX.GetIntArray
PlayerPrefsX。
SetFloatArray
PlayerPrefsX。
GetFloatArray
PlayerPrefsX。
SetStringArray
PlayerPrefsX。
GetStringArray
保存一个向量:
staticfunctionSetVector3(key:
string,value:
Vector3):
boolean
//尝试保存一个物体位置
varplayer:
GameObject;
if(!
PlayerPrefsX.SetVector3(”PlayerPosition”,player.transform。
position))
print(”不能保存物体位置!
”);
成功返回真,否则假(例如用Webplayer保存超过1M数据的时候)。
获得一个向量:
varplayer:
GameObject;
player.transform.position=PlayerPrefsX.GetVector3("PlayerPosition");
如果读取的向量存在的话将会返回这个向量值.
保存一组整型数据:
//当保存Scores命名的分数时候创建一个10成员数组
varmyScores=newint[10];
for(i=0;i〈myScores。
Length;i++)
myScores=i+1;
if(!
PlayerPrefsX.SetIntArray("Scores",myScores))
print(”不能保存分数!
");
获得一组整型数据:
staticfunctionGetIntArray(key:
string):
int[]
如果存在将返回这组数据,否则将返回int[0];
varscores=PlayerPrefsX.GetIntArray(”Scores");
staticfunctionGetIntArray(key:
string,defaultValue:
int,defaultSize:
int):
int[]
如果不存在这组数据,将返回指定长度的数组以及每个成员都会赋予默认值.
其他函数的使用方法:
staticfunctionSetFloatArray(key:
string,value:
float[]):
boolean
staticfunctionGetFloatArray(key:
string):
float[]
staticfunctionGetFloatArray(key:
string,defaultValue:
float,defaultSize:
int):
float[]
staticfunctionSetStringArray(key:
string,value:
String[]):
boolean
staticfunctionSetStringArray(key:
string,value:
String[],separator:
char):
boolean
staticfunctionGetStringArray(key:
string):
string[]
staticfunctionGetStringArray(key:
string,separator:
char):
string[]
staticfunctionGetStringArray(key:
string,defaultValue:
String,defaultSize:
int):
string[]
staticfunctionGetStringArray(key:
string,separator:
char,defaultValue:
String,defaultSize:
int):
string[]
该脚本的Javascript版:
//Siteofthisscript:
〈ahref="http:
//www。
unifycommunity。
com/wiki/index.php?
title=ArrayPrefs”target="_blank”rel=”external”>http:
//www。
unifycommunity。
com/wiki/index.php?
title=ArrayPrefs
//Createdby:
EricHaines(Eric5h5)
//Contribution(Set/GetVector3)03/2010:
MarioMadureiraFontes(fontmaster)
staticfunctionSetVector3(key:
String,vector:
Vector3):
boolean{
returnSetFloatArray(key,[vector.x,vector.y,vector.z]);
}
staticfunctionGetVector3(key:
String):
Vector3{
varfloatArray=GetFloatArray(key);
if(floatArray.Length<3){
returnVector3.zero;
}
returnVector3(floatArray[0],floatArray[1],floatArray[2]);
}
staticfunctionSetIntArray(key:
String,intArray:
int[]):
boolean{
if(intArray。
Length==0)returnfalse;
varsb=newSystem。
Text.StringBuilder();
for(i=0;i〈intArray。
Length—1;i++){
sb.Append(intArray[i]).Append("|");
}
sb.Append(intArray[i]);
try{
PlayerPrefs。
SetString(key,sb.ToString());
}
catch(err){
returnfalse;
}
returntrue;
}
staticfunctionGetIntArray(key:
String):
int[]{
if(PlayerPrefs。
HasKey(key)){
varstringArray=PlayerPrefs.GetString(key)。
Split(”|"[0]);
varintArray=newint[stringArray.Length];
for(i=0;i〈stringArray.Length;i++){
intArray[i]=parseInt(stringArray[i]);
}
returnintArray;
}
returnnewint[0];
}
staticfunctionGetIntArray(key:
String,defaultValue:
int,defaultSize:
int):
int[]{
if(PlayerPrefs.HasKey(key)){
returnGetIntArray(key);
}
varintArray=newint[defaultSize];
for(i=0;i〈defaultSize;i++){
intArray[i]=defaultValue;
}
returnintArray;
}
staticfunctionSetFloatArray(key:
String,floatArray:
float[]):
boolean{
if(floatArray。
Length==0)returnfalse;
varsb=newSystem.Text。
StringBuilder();
for(i=0;iLength—1;i++){
sb.Append(floatArray[i]).Append("|”);
}
sb。
Append(floatArray[i]);
try{
PlayerPrefs.SetString(key,sb。
ToString());
}
catch(err){
returnfalse;
}
returntrue;
}
staticfunctionGetFloatArray(key:
String):
float[]{
if(PlayerPrefs.HasKey(key)){
varstringArray=PlayerPrefs.GetString(key).Split(”|"[0]);
varfloatArray=newfloat[stringArray。
Length];
for(i=0;i〈stringArray。
Length;i++){
floatArray[i]=parseFloat(stringArray[i]);
}
returnfloatArray;
}
returnnewfloat[0];
}
staticfunctionGetFloatArray(key:
String,defaultValue:
float,defaultSize:
int):
float[]{
if(PlayerPrefs.HasKey(key)){
returnGetFloatArray(key);
}
varfloatArray=newfloat[defaultSize];
for(i=0;ifloatArray[i]=defaultValue;
}
returnfloatArray;
}
staticfunctionSetStringArray(key:
String,stringArray:
String[],separator:
char):
boolean{
if(stringArray。
Length==0)returnfalse;
try{
PlayerPrefs.SetString(key,String.Join(separator。
ToString(),stringArray));
}
catch(err){
returnfalse;
}
returntrue;
}
staticfunctionSetStringArray(key:
String,stringArray:
String[]):
boolean{
if(!
SetStringArray(key,stringArray,"\n”[0])){
returnfalse;
}
returntrue;
}
staticfunctionGetStringArray(key:
String,separator:
char):
String[]{
if(PlayerPrefs.HasKey(key)){
returnPlayerPrefs。
GetString(key)。
Split(separator);
}
returnnewString[0];
}
staticfunctionGetStringArray(key:
String):
String[]{
if(PlayerPrefs.HasKey(key)){
returnPlayerPrefs.GetString(key).Split("\n"[0]);
}
returnnewString[0];
}
staticfunctionGetStringArray(key:
String,separator:
char,defaultValue:
String,defaultSize:
int):
String[]{
if(PlayerPrefs.HasKey(key)){
returnPlayerPrefs.GetString(key)。
Split(separator);
}
varstringArray=newString[defaultSize];
for(i=0;istringArray[i]=defaultValue;
}
returnstringArray;
}
staticfunctionGetStringArray(key:
String,defaultValue:
String,defaultSize:
int):
String[]{
returnGetStringArray(key,"\n"[0],defaultValue,defaultSize);
}
该脚本的C#版:
//Contribution(CreatedCSharpVersion)10/2010:
DanielP.Rossi(DR9885)
//Contribution(CreatedBoolArray)10/2010:
DanielP.Rossi(DR9885)
//Contribution(Madefunctionspublic)01/2011:
Bren
usingUnityEngine;
usingSystem;
publicstaticclassPlayerPrefsX
{
#regionVector3
///
///StoresaVector3valueintoaKey
///〈/summary〉
publicstaticboolSetVector3(stringkey,Vector3vector)
{
returnSetFloatArray(key,newfloat[3]{vector。
x,vector.y,vector。
z});
}
//////FindsaVector3valuefromaKey
///〈/summary〉
publicstaticVector3GetVector3(stringkey)
{
float[]floatArray=GetFloatArray(key);
if(floatArray.Length<3)
returnVector3。
zero;
returnnewVector3(floatArray[0],floatArray[1],floatArray[2]);
}
#endregion
#regionBoolArray
//////StoresaBoolArrayorMultipleParametersintoaKey
///
publicstaticboolSetBoolArray(stringkey,paramsbool[]boolArray)
{
if(boolArray.Length==0)returnfalse;
System.Text。
StringBuildersb=newSystem。
Text。
StringBuilder();
for(inti=0;isb。
Append(boolArray[i]).Append(”|”);
sb。
Append(boolArray[boolArray.Length—1]);
try{PlayerPrefs。
SetString(key,sb。
ToString());}
catch(Exceptione){returnfalse;}
returntrue;
}
///〈summary〉
///ReturnsaBoolArrayfromaKey
///
publicstaticbool[]GetBoolArray(stringkey)
{
if(PlayerPrefs。
HasKey(key))
{
string[]stringArray=PlayerPrefs。
GetString(key)。
Split("|"[0]);
bool[]boolArray=newbool[stringArray。
Length];
for(inti=0;iboolArray[i]=Convert。
ToBoolean(stringArray[i]);
returnboolArray;
}
returnnewbool[0];
}
///
///ReturnsaBoolArrayfromaKey
///Note:
Usesdefaultvaluestoinitializeifnokeywasfound
///
publicstaticbool[]GetBoolArray(stringkey,booldefaultValue,intdefaultSize)
{
if(PlayerPrefs.HasKey(key))
returnGetBoolArray(key);
bool[]boolArray=newbool[defaultSize];
for(inti=0;iboolArray[i]=defaultValue;
returnboolArray;
}
#endregion
#regionIntArray
///〈summary〉
///StoresaIntArrayorMultipleParametersintoaKey
///〈/summary〉
publicstaticboolSetIntArray(stringkey,paramsint[]intArray)
{
if(intArray。
Length==0)returnfalse;
System.Text.StringBuildersb=newSystem。
Text.StringBuilder();
for(inti=0;i〈intArray.Length—1;i++)
sb.Append(intArray[i]).Append(”|");
sb.Append(intArray[intArray.Length—1]);
try{PlayerPrefs。
SetString(key,sb。
ToString());}
catch(Exceptione){returnfalse;}
returntrue;
}
//////ReturnsaIntArrayfromaKey
///
publicstaticint[]GetIntArray(stringkey)
{
if(PlayerPrefs。
HasKey(key))
{
string[]stringArray=PlayerPrefs.GetString(key)。
Split(”|”[0]);
int[]intArray=newint[stringArray。
Length];
for(inti=0;i〈stringArray。
Length;i++)
intArray[i]=Convert.ToInt32(stringArray[i]);
returnintArray;
}
returnnewint[0];
}
///〈summary>
///ReturnsaIntArrayfromaKey
///Note:
Usesdefaultvaluestoinitializeifnokeywasfound
///
publicstaticint[]GetIntArray(stringkey,intdefaultValue,intdefaultSize)
{
if(PlayerPrefs。
HasKey(key))
returnGetIntArray(key);
int[]intArray=newint[defaultSize];
for(inti=0;iintArray[i]=defaultValue;
returnintArray;
}
#endregion
#regionFloatArray
//////StoresaFloatArrayorMultipleParametersintoaKey
///
publicstaticboolSetFloatArray(stringkey,paramsfloat[]floatArray)
{
if(floatArray。
Length==0)returnfalse;
System。
Text。
StringBuildersb=newSystem.Text。
StringBuilder();
for(inti=0;i〈floatArray。
Length—1;i++)
sb。
Append(floatArray[i])。
Append("|");
s