Unity3D 中保存或读取数组的方法
Unity本身有PlayerPrefs来做一些数据的保存和读取,也可以通过循环来做批量的读取或者保存,下面这个脚本可以方便的调用用来做上面批量的工作,比如读取一组文本数组数据和保存一组文本数组数据.
建议把这个脚本放在Standard Assets目录下,这样可以按照下面的方法方便的调用它.现在包含了下面这些命令:
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))
print("不能保存物体位置!");
成功返回真,否则假(例如用Webplayer保存超过1M数据的时候)。
获得一个向量
var player : 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("不能保存分数!");
获得一组整型数据
static function GetIntArray (key : string) : int[]
如果存在将返回这组数据,否则将返回int[0];
var scores = PlayerPrefsX.GetIntArray("Scores");
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 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[]
该脚本的Javascript版:
// Site of this script: <a href="http://www.unifycommunity.com/wiki/index.php?title=ArrayPrefs" target="_blank" rel="external">http://www.unifycommunity.com/wiki/index.php?title=ArrayPrefs</a>
// 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.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[]) : 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;
}
return 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 intArray;
}
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;
}
return 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]);
try {
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];
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);
}
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 {
PlayerPrefs.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 function 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.GetString(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[defaultSize];
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 (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
/// <summary>
/// Stores a Vector3 value into a Key
/// </summary>
public static bool SetVector3(string key, Vector3 vector)
{
return SetFloatArray(key, new float[3] { vector.x, vector.y, vector.z });
}
/// <summary>
/// Finds a Vector3 value from a Key
/// </summary>
public static Vector3 GetVector3(string key)
{
float[] floatArray = GetFloatArray(key);
if (floatArray.Length < 3)
return Vector3.zero;
return new Vector3(floatArray[0], floatArray[1], floatArray[2]);
}
#endregion
#region Bool Array
/// <summary>
/// Stores a Bool Array or Multiple Parameters into a Key
/// </summary>
public static 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]);
try { PlayerPrefs.SetString(key, sb.ToString()); }
catch (Exception e) { return false; }
return true;
}
/// <summary>
/// Returns a Bool Array from a Key
/// </summary>
public static bool[] GetBoolArray(string key)
{
if (PlayerPrefs.HasKey(key))
{
string[] stringArray = PlayerPrefs.GetString(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];
}
/// <summary>
/// Returns a Bool Array from a Key
/// Note: Uses default values to initialize if no key was found
/// </summary>
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] = defaultValue;
return boolArray;
}
#endregion
#region Int Array
/// <summary>
/// Stores a Int Array or Multiple Parameters into a Key
/// </summary>
public static bool SetIntArray(string key, params int[] intArray)
{
if (intArray.Length == 0) return false;
System.Text.StringBuilder sb = new System.Text.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;
}
/// <summary>
/// Returns a Int Array from a Key
/// </summary>
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(stringArray[i]);
return intArray;
}
return new int[0];
}
/// <summary>
/// Returns a Int Array from a Key
/// Note: Uses default values to initialize if no key was found
/// </summary>
public static int[] GetIntArray(string key, int defaultValue, int defaultSize)
{
if (PlayerPrefs.HasKey(key))
return GetIntArray(key);
int[] intArray = new int[defaultSize];
for (int i = 0; i < defaultSize; i++)
intArray[i] = defaultValue;
return intArray;
}
#endregion
#region Float Array
/// <summary>
/// Stores a Float Array or Multiple Parameters into a Key
/// </summary>
public static bool SetFloatArray(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]);
try
{
PlayerPrefs.SetString(key, sb.ToString());
}
catch (Exception e)
{
return false;
}
return true;
}
/// <summary>
/// Returns a Float Array from a Key
/// </summary>
public static float[] GetFloatArray(string key)
{
if (PlayerPrefs.HasKey(key))
{
string[] stringArray = PlayerPrefs.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];
}
/// <summary>
/// Returns a String Array from a Key
/// Note: Uses default values to initialize if no key was found
/// </summary>
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++)
floatArray[i] = defaultValue;
return floatArray;
}
#endregion
#region String Array
/// <summary>
/// Stores a String Array or Multiple Parameters into a Key w/ specific char seperator
/// </summary>
public static bool SetStringArray(string key, char separator, params string[] stringArray)
{
if (stringArray.Length == 0) return false;
try
{ PlayerPrefs.SetString(key, String.Join(separator.ToString(), stringArray)); }
catch (Exception e)
{ return false; }
return true;
}
/// <summary>
/// Stores a Bool Array or Multiple Parameters into a Key
/// </summary>
public static bool SetStringArray(string key, params string[] stringArray)
{
if (!SetStringArray(key, "\n"[0], stringArray))
return false;
return true;
}
/// <summary>
/// Returns a String Array from a key & char seperator
/// </summary>
public static string[] GetStringArray(string key, char separator)
{
if (PlayerPrefs.HasKey(key))
return PlayerPrefs.GetString(key).Split(separator);
return new string[0];
}
/// <summary>
/// Returns a Bool Array from a key
/// </summary>
public static string[] GetStringArray(string key)
{
if (PlayerPrefs.HasKey(key))
return PlayerPrefs.GetString(key).Split("\n"[0]);
return new string[0];
}
/// <summary>
/// Returns a String Array from a key & char seperator
/// Note: Uses default values to initialize if no key was found
/// </summary>
public static string[] GetStringArray(string key, char separator, string defaultValue, int defaultSize)
{
if (PlayerPrefs.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;
}
/// <summary>
/// Returns a String Array from a key
/// Note: Uses default values to initialize if no key was found
/// </summary>
public static String[] GetStringArray(string key, string defaultValue, int defaultSize)
{
return GetStringArray(key, "\n"[0], defaultValue, defaultSize);
}
#endregion
}
Unity3D 中保存或读取数组的方法相关推荐
- Unity 中保存或读取数组的方法
Unity本身有PlayerPrefs来做一些数据的保存和读取,也可以通过循环来做批量的读取或者保存,下面这个脚本可以方便的调用用来做上面批量的工作,比如读取一组文本数组数据和保存一组文本数组数据. ...
- Unity3D 中PlayerPrefs保存或读取数组的方法
Unity本身有PlayerPrefs来做一些数据的保存和读取,也可以通过循环来做批量的读取或者保存,下面这个脚本可以方便的调用用来做上面批量的工作,比如读取一组文本数组数据和保存一组文本数组数据. ...
- unityplayerpre存档_Unity3D 中PlayerPrefs保存或读取数组的方法 | 学步园
Unity本身有PlayerPrefs来做一些数据的保存和读取,也可以通过循环来做批量的读取或者保存,下面这个脚本可以方便的调用用来做上面批量的工作,比如读取一组文本数组数据和保存一组文本数组数据. ...
- Unity3D 中 2D_Toolkit插件下载 和 导入方法
Unity3D 中 2D_Toolkit插件下载 和 导入方法 1.你把下载来的包放到 安装目录:Editor\Standard Packages里面. 2.然后按ctrl+9,进入asset sto ...
- Android中保存数据的三种方法
一,Preferences Preferences是一个较轻量级的存储数据的方法,具体使用方法: 在A中保存值: SharedPreferences.Editor sharedata = getSha ...
- Android开发中保存数据的四种方法方法
本文来自:安卓航班网 在Android开发中我们会接触到四种数据存储方式,每种存储方式都各有不同:以下安卓航班分别列举了Android开发中的不同存储方式的特点. 一,Preferences Pref ...
- android读取网络配置文件,Android 中保存、读取设置配置数据、记录登录状态
记录登录状态,我认为可以在用户登录成功后,与服务器约定一个 token 凭据,保存这个 token 凭据,而不是直接保存用户名.密码. 当然,保存 token 与保存设置数据是一样的,本文只讲解如何保 ...
- 在Web项目中保存会话的两种方法:Cookie和Session
Web浏览器是与Web服务器之间的会话是一个不保持的会话,浏览器发起请求,建立会话,获得结果后,会话就不在了.然而,在涉及到用户登录Web项目中,开发人员必须有一种方法,区分用户登录前后的状态,以便对 ...
- java中几种读取配置文件的方法
java读取.properties配置文件的几种方法 (1)Properties类读取 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集.不过 ...
最新文章
- python软件怎么使用-Python快速入门—如何选择使用包管理工具?
- 6 redhat 查看rtc时间_Linux EasyStack-Redhat安装Docker
- 关于六年级定格动画计算机教案,定格动画教案
- eclipse 创建ssm spring+springmvc+mybatis 实现登录注册
- kalilinux安装qt_Kali Linux 安装和搜狗输入法的安装
- Sona(NBUT-1457)
- 阿里影业、IMAX股价飙涨!2021年中国电影总票房已突破100亿元人民币
- DaveGray推荐的视觉思维好书(一)
- 算法设计与分析课后习题答案
- 腾讯内部项目管理课程
- What Music简单的全网音乐播放器
- 技术干货大集锦(一)
- 2022年中南大学计算机考研复试内容是什么
- uni-app开发App上架Apple Store流程(简略版)
- ale插件 vim_vim 撸码必备插件之 autoformat 与 ale[视频]
- 单精度、双精度和半精度浮点格式之间的区别
- 使用httpclient进行 Http get请求带参数cookie
- 16QAM调制解调系统误码率和星座图的matlab仿真
- rdesktop用法
- WMS Top10 软件服务商
热门文章
- 小学一年级计算机上课内容,小学信息技术一年级教案
- CF6D--Lizards and Basements 2译文
- 大学四年自学走来,关于怎么学「操作系统」和「计算机网络」我贡献出来了!......
- js删除数组中指定的某个元素
- 海子微信公众号开通拉
- HTML5期末大作业:食品超市网站设计——食品超市-功能齐全(31页) 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
- 《仙剑奇侠传》经典台词的英文翻译
- windows 清理c盘空间
- 2.前端面试 css篇
- 计算机组装与维护----第八次作业