1、 Unity3D教程:保存或读取数据组的方法 Posted on 2013年02月05日 by U3d / Unity3D 基础教程/被围观 195 次 Unity本身有PlayerPrefs来做一些数据的保存和读取,也可以通过循环来做批量的读取或者保存,下面这个脚本可以方便的调用用来做上面批量的工作,比如读取一组文本数组数据和保存一组文本数组数据。Unity3D教程:Unity3D实用小功能 建议把这个脚本放在Standard Assets目录下,这样可以按照下面的方法方便的调用它.现在包含了下面这些命令: PlayerPrefsX.SetVector3 PlayerPref
2、sX.GetVector3 PlayerPrefsX.SetIntArray PlayerPrefsX.GetIntArray PlayerPrefsX.SetFloatArray PlayerPrefsX.GetFloatArray PlayerPrefsX.SetStringArray PlayerPrefsX.GetStringArray 保存一个向量: static function SetVector3 (key : string, value : Vector3) : boolean //尝试保存一个物体位置 var player : GameObject;
3、 if (!PlayerPrefsX.SetVector3("PlayerPosition", player.transform.position)) print("不能保存物体位置!"); 成功返回真,否则假(例如用Webplayer保存超过1M数据的时候)。 获得一个向量: var player : GameObject; player.transform.position = PlayerPrefsX.GetVector3("PlayerPosition"); 如果读取的向量存在的话将会返回这个向量值。 保存一组整型数据: //当保存Scores命名的分数时候创建一
4、个10成员数组 var myScores = new int[10]; for (i = 0; i < myScores.Length; i++) myScores = i+1; if (!PlayerPrefsX.SetIntArray("Scores", myScores)) print("不能保存分数!"); 获得一组整型数据: static function GetIntArray (key : string) : int[] 如果存在将返回这组数据,否则将返回int[0]; var scores = PlayerPrefsX.GetIntArray("Scores"
5、); static function GetIntArray (key : string, defaultValue : int, defaultSize : int) : int[] 如果不存在这组数据,将返回指定长度的数组以及每个成员都会赋予默认值. 其他函数的使用方法: static function SetFloatArray (key : string, value : float[]) : boolean static function GetFloatArray (key : string) : float[] static function GetFloatArr
6、ay (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[] stat
7、ic 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[] 该脚本的Javasc
8、ript版: // Site of this script: // Created by: Eric Haines (Eric5h5) // Contribution (Set/Get Vector3) 03/2010: Mario Madureira Fontes (fontmaster) static function SetVector3 (key : String, vector : Vector3) : boolean { return SetFloatArray(key, [vector.
9、x, vector.y, vector.z]); } static function GetVector3 (key : String) : Vector3 { var floatArray = GetFloatArray(key); if (floatArray.Length < 3) { return Vector3.zero; } return Vector3(floatArray[0], floatArray[1], floatArray[2]); } static function SetIntArray (key : String, intArray : int[
10、]) : boolean { if (intArray.Length == 0) return false; var sb = new System.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) { return false; } retur
11、n true; } static function GetIntArray (key : String) : int[] { if (PlayerPrefs.HasKey(key)) { var stringArray = PlayerPrefs.GetString(key).Split("|"[0]); var intArray = new int[stringArray.Length]; for (i = 0; i < stringArray.Length; i++) { intArray[i] = parseInt(stringArray[i]); } return i
12、ntArray; } return new int[0]; } static function GetIntArray (key : String, defaultValue : int, defaultSize : int) : int[] { if (PlayerPrefs.HasKey(key)) { return GetIntArray(key); } var intArray = new int[defaultSize]; for (i = 0; i < defaultSize; i++) { intArray[i] = defaultValue; } ret
13、urn intArray; } static function SetFloatArray (key : String, floatArray : float[]) : boolean { if (floatArray.Length == 0) return false; var sb = new System.Text.StringBuilder(); for (i = 0; i < floatArray.Length-1; i++) { sb.Append(floatArray[i]).Append("|"); } sb.Append(floatArray[i]); tr
14、y { PlayerPrefs.SetString(key, sb.ToString()); } catch (err) { return false; } return true; } static function GetFloatArray (key : String) : float[] { if (PlayerPrefs.HasKey(key)) { var stringArray = PlayerPrefs.GetString(key).Split("|"[0]); var floatArray = new float[stringArray.Length];
15、 for (i = 0; i < stringArray.Length; i++) { floatArray[i] = parseFloat(stringArray[i]); } return floatArray; } return new float[0]; } static function GetFloatArray (key : String, defaultValue : float, defaultSize : int) : float[] { if (PlayerPrefs.HasKey(key)) { return GetFloatArray(key);
16、 } var floatArray = new float[defaultSize]; for (i = 0; i < defaultSize; i++) { floatArray[i] = defaultValue; } return floatArray; } static function SetStringArray (key : String, stringArray : String[], separator : char) : boolean { if (stringArray.Length == 0) return false; try { PlayerPr
17、efs.SetString(key, String.Join(separator.ToString(), stringArray)); } catch (err) { return false; } return true; } static function SetStringArray (key : String, stringArray : String[]) : boolean { if (!SetStringArray(key, stringArray, "\n"[0])) { return false; } return true; } static fu
18、nction GetStringArray (key : String, separator : char) : String[] { if (PlayerPrefs.HasKey(key)) { return PlayerPrefs.GetString(key).Split(separator); } return new String[0]; } static function GetStringArray (key : String) : String[] { if (PlayerPrefs.HasKey(key)) { return PlayerPrefs.GetStr
19、ing(key).Split("\n"[0]); } return new String[0]; } static function GetStringArray (key : String, separator : char, defaultValue : String, defaultSize : int) : String[] { if (PlayerPrefs.HasKey(key)) { return PlayerPrefs.GetString(key).Split(separator); } var stringArray = new String[defaultS
20、ize]; for (i = 0; i < defaultSize; i++) { stringArray[i] = defaultValue; } return stringArray; } static function GetStringArray (key : String, defaultValue : String, defaultSize : int) : String[] { return GetStringArray(key, "\n"[0], defaultValue, defaultSize); } 该脚本的C#版: // Contribution (
21、Created CSharp Version) 10/2010: Daniel P. Rossi (DR9885)
// Contribution (Created Bool Array) 10/2010: Daniel P. Rossi (DR9885)
// Contribution (Made functions public) 01/2011: Bren
using UnityEngine;
using System;
public static class PlayerPrefsX
{
#region Vector 3
///
22、s a Vector3 value into a Key
///
public static bool SetVector3(string key, Vector3 vector)
{
return SetFloatArray(key, new float[3] { vector.x, vector.y, vector.z });
}
///
23、
{
float[] floatArray = GetFloatArray(key);
if (floatArray.Length < 3)
return Vector3.zero;
return new Vector3(floatArray[0], floatArray[1], floatArray[2]);
}
#endregion
#region Bool Array
///
24、 bool SetBoolArray(string key, params bool[] boolArray) { if (boolArray.Length == 0) return false; System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < boolArray.Length - 1; i++) sb.Append(boolArray[i]).Append("|"); sb.Append(boolArray[boolArray.Length - 1]); tr
25、y { PlayerPrefs.SetString(key, sb.ToString()); }
catch (Exception e) { return false; }
return true;
}
///
26、g(key).Split("|"[0]);
bool[] boolArray = new bool[stringArray.Length];
for (int i = 0; i < stringArray.Length; i++)
boolArray[i] = Convert.ToBoolean(stringArray[i]);
return boolArray;
}
return new bool[0];
}
///
27、 initialize if no key was found /// public static bool[] GetBoolArray(string key, bool defaultValue, int defaultSize) { if (PlayerPrefs.HasKey(key)) return GetBoolArray(key); bool[] boolArray = new bool[defaultSize]; for (int i = 0; i < defaultSize; i++) boolArray[i] = defaultValu
28、e;
return boolArray;
}
#endregion
#region Int Array
///
29、ext.StringBuilder();
for (int i = 0; i < intArray.Length - 1; i++)
sb.Append(intArray[i]).Append("|");
sb.Append(intArray[intArray.Length - 1]);
try { PlayerPrefs.SetString(key, sb.ToString()); }
catch (Exception e) { return false; }
return true;
}
///
30、 a Key /// public static int[] GetIntArray(string key) { if (PlayerPrefs.HasKey(key)) { string[] stringArray = PlayerPrefs.GetString(key).Split("|"[0]); int[] intArray = new int[stringArray.Length]; for (int i = 0; i < stringArray.Length; i++) intArray[i] = Convert.ToInt32(string
31、Array[i]);
return intArray;
}
return new int[0];
}
///
32、
return GetIntArray(key);
int[] intArray = new int[defaultSize];
for (int i = 0; i < defaultSize; i++)
intArray[i] = defaultValue;
return intArray;
}
#endregion
#region Float Array
///
33、etFloatArray(string key, params float[] floatArray) { if (floatArray.Length == 0) return false; System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < floatArray.Length - 1; i++) sb.Append(floatArray[i]).Append("|"); sb.Append(floatArray[floatArray.Length - 1]); t
34、ry
{
PlayerPrefs.SetString(key, sb.ToString());
}
catch (Exception e)
{
return false;
}
return true;
}
///
35、s.GetString(key).Split("|"[0]);
float[] floatArray = new float[stringArray.Length];
for (int i = 0; i < stringArray.Length; i++)
floatArray[i] = Convert.ToSingle(stringArray[i]);
return floatArray;
}
return new float[0];
}
///
36、default values to initialize if no key was found /// public static float[] GetFloatArray(string key, float defaultValue, int defaultSize) { if (PlayerPrefs.HasKey(key)) return GetFloatArray(key); float[] floatArray = new float[defaultSize]; for (int i = 0; i < defaultSize; i++) fl
37、oatArray[i] = defaultValue;
return floatArray;
}
#endregion
#region String Array
///
38、if (stringArray.Length == 0) return false;
try
{ PlayerPrefs.SetString(key, String.Join(separator.ToString(), stringArray)); }
catch (Exception e)
{ return false; }
return true;
}
///
39、tringArray(string key, params string[] stringArray)
{
if (!SetStringArray(key, "\n"[0], stringArray))
return false;
return true;
}
///
40、ayerPrefs.HasKey(key))
return PlayerPrefs.GetString(key).Split(separator);
return new string[0];
}
///
41、0]);
return new string[0];
}
///
42、erPrefs.HasKey(key))
return PlayerPrefs.GetString(key).Split(separator);
string[] stringArray = new string[defaultSize];
for (int i = 0; i < defaultSize; i++)
stringArray[i] = defaultValue;
return stringArray;
}
///
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818