我爱编程

unity 3d 数据存储之—PlayerPrefs,XML数据

2017-01-06  本文已影响0人  IT白鸽

PlayerPrefs存储数据

可理解为可持久化存储,还可以理解为游戏存档,玩RPG游戏的时候肯定有游戏游戏存档,存档中记录玩家以前游戏的过程,这些都是以数据的形式存在PlayerPrefs中。

On Mac OS X PlayerPrefs are stored in ~/Library/Preferences folder,in a dile named untiy.[company name].[product name].plist,where copmpany and product name are the names set up in project Settings.The same.plist file id used for both projects run in the Editor and standalone players.

在Mac OS X上存储在~/Library/PlayerPrefs文件夹,名为unity.[company name].[product name].plist,这里company和product名是在project Setting中设置的,相同的plist用于在编辑器中运行的工程和独立模式。

On Windows standalone plauers ,playerPrefs are stored in the registry under HKCU\Software\[compang name]\[product name]key,where company and product names are the names set up in project Settings;

在windows独立模式下,playerPrefs被存储在注册的HKCU\Software\[company name]\[product name]键下,这里company和product名是在project setting中设置的。

On Web Players,Playerprefs are stored in binary files unfer~/Library/Prefaerences/untiy/webPlayerprefs on Mac Os X and %APPDATA%\Untiy\WebPayerPrefs on Windows. There is one Preference file per Web Player URL and the file size is limited to 1 megabute.If this limit would be exceeded, SetInt,SetFloat and SetString will not store the value and threow a PlayerPrefsException.

在web模式,PlayerPrefs存储在Mac OS  X的二进制文件~/Library/Preferences/Untiy/WebPlayerPrefs中和Windows的%APPARA%\Unity\WebPlayerPrefs中,一个游戏存档文件对应一个web播放器URL并且文件大小被限制为1MB。如果超出这个限制,SeTInt、SetFloat和SetString将不会存储值并抛出一个PlayerPrefsException。

On Linux PlayerPrefs are stored in ~/.config/Unity3d/[CompanyName]/[ProductName] folder.

在Linux上存储在~/.config/Unity3d/[CompanyName]/[ProductName]文件中.


示例:存储玩家姓名 年龄 成绩(简化)

通过UI界面中的InputFiled控件获取Text值 输出另一个场景中 用UGUI写出

1.先引入两个命名空间

using UnityEngin.UI;

using UnityEngine.SceneManagement;

2.定义公共类参数  分别为name_ft,age_ft,score_ft;

public InputField name_ft;

public InputField age_ft;

public InputField score_ft;

3.写一个button事件方法

public void StoreData()

{

//获取数据

string name=name_ft.text;

string age=age_ft.text;

string score=score_ft.text;

//存储数据

PlayerPrefs.SetString("Name",name);

PlayerPrefs.SetInt("age",int.Parse(age))

PlayerPrefs.SetFloat("Score",flaot.Parse(score));

//跳转场景 显示数据

SceneManager.LoadScene(1);

}

//场景2

//定义变量 用来接收数据

string unname;

int unage;

float unscore;

//使用OnGUI的方法

void OnGUI()

{

GUILayout.Label(unname);

GUILayout.Lable(unage.TOString());

GUILayout.Lable(unscore.ToString());

}

场景如图1,2。

图1 场景1输入场景 图2 场景2输出效果

XML数据生成和解析

XML指看扩展标记语言(Extensible Markup Language)

XML设计宗旨是传输数据,而非显示数据

XML继承结构

-System.Object

 -System.Xml.XmlNode(表示XML节点)

    +System.Xml.XmlDocument(表示XML文档)

    +System.Xml.XmlAttribute(表示XML属性)

    -System.Xml.XmlLinkedNode

       +System.Xml.XmlElement(表示XML元素)

注:上面的 + 相当于文件的未打开 -文件打开的后


Xml数据生成步骤 Xml数据生成实例 数据生成示例 Xml解析示例

JSON数据生成和解析

JOSN是纯文本

JOSN是轻量级的数据交换

JOSN是具有层级结构(值中存在值)

JOSN语法

数据在键值对

数据由逗号分隔

花括号保存对象

方括号保存数组

使用前需要将 System.Json(便于json生成)和LitJson.dll(便于解析json)放入到Assets文件下

示例

//创建json对象,

JsonObject jsonTransform=new Jsonobject();

//创建一个json值对象,存储一个value

JsonValue jsonPosition="10,20,30";

//json对象,添加一个key:value

jsontrasnform.Add("position",jsontransform);

//打印结果

Debug.Log(jsonTrasnform.ToString(0);

结果显示;"position“:10,20,30

ListJson.JsonMapper

把对象转化成JSON格式字符串:JsonMaooer.ToJson

把JSON格式字符串转化成对象:JsonMapper.Toobject

Json与xml比较

这次就写到这里。如果有错留个消息给我就好,我会修改修改。

上一篇下一篇

猜你喜欢

热点阅读