美文网首页我爱编程
unity 3d 数据存储之—PlayerPrefs,XML数据

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

作者: IT白鸽 | 来源:发表于2017-01-06 10:29 被阅读0次

    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比较

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

    相关文章

      网友评论

        本文标题:unity 3d 数据存储之—PlayerPrefs,XML数据

        本文链接:https://www.haomeiwen.com/subject/gzefvttx.html