Unity之数据持久化(PlayerPrefs)
2016-04-20 21:52
519 查看
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键,然后数据被存储下来。
然后我们重新运行程序,刚刚的大小就会被重设回去。
在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键,然后数据被存储下来。
然后我们重新运行程序,刚刚的大小就会被重设回去。
相关文章推荐
- unity 集成 RenderDoc 调试shader的方法
- Unity3d-编辑器-PrefabUtility.CreateEmptyPrefab PrefabUtility.CreatePrefab失败
- 2D游戏获得子节点的最小最大位置
- 【Unity】5.2 天空盒
- 【Unity】5.1 3D坐标系基础知识
- 【Unity】第5章 3D坐标系和天空盒
- 【Unity】6.8 Quaternion类(四元数)
- 【Unity】6.7 向量和Vector3类
- win7Aero主题下设置unity窗口全屏
- 【Unity】6.6 Random类
- 【Unity】6.5 Time类、Mathf类、Coroutine类
- 【Unity】6.4 Transform--移动、旋转和缩放游戏对象
- 【Unity】Unity 3D中的内存管理
- Unity3D学习日记(五)实现围绕物品旋转的的摄像机控制
- Unity3D使用碰撞体做触发器实现简单的自己主动开门
- Unity3D脚本依赖RequireComponent(自动添加关联的脚本)
- 【小松教你手游开发】【unity实用技能】unity自带寻路Navmesh入门教程
- Unity的DrawCall
- IoC实践--ASP.NET MVC5 采用Unity依赖注入Controller详解
- 【小松教你手游开发】【unity实用技能】一键改变UI字体