Unity3d数据存储 PlayerPrefs,XML,Json数据的存储与解析

今天来复习一下数据存储方面的基础知识,Unity3d中常用的数据存储方式有Unity自带的PlayerPrefs, XML文档, Json文档,还有常用的轻量级数据库SQL, 涉及的琐碎知识非常多,在这里自己归纳总结一下,方便日后温故而知新.

PlayerPrefs存储数据

PlayerPrefs的存储方式非常简单,但可用性不强,一般只用于调试过程存储少量数据,很少大范围使用

适用设备:Mac OSX, Linux, Windows,Web Players

存储机制:Key-Value (类似于字典的键值对,通过键值索引到相应数据)

可存储变量类型: int, float, string

常用方法: SetFloat     存储float 类型的数据                 GetFloat        获取float 类型的数据

SetInt         存储Int类型的数据                     GetInt            获取Int 类型的数据

SetString    存储string 类型的数据               GetString      获取string 类型的数据

DeleteAll     删除所有PlayerPrefs数据          HasKey        判断是否存在该Key值的数据

简单代码示例如下,是不是很简单?

void ExamplePlayerPrefs()
{
    PlayerPrefs.SetFloat("PlayerScore", 10f);
    Debug.Log(PlayerPrefs.GetFloat("PlayerScore"));
}

XML的存储与解析

(1)XMl常用类及其常用属性和方法

XmlNode

InnerText                           获取或设置节点及其所有子节点的值(仅元素节点拥有)

Value                                 获取或设置节点的值(仅属性节点拥有)

AppendChild                      将指定的节点添加到该节点的子节点列表的末尾

ChildNodes                        获取节点的所有子节点

FirestChild

XmlDocument

CreateXmlDeclaration       创建一个具有指定值的XmlDeclaration节点

CreateElement                   创建具有指定名称的元素

CreateNode                       创建具有指定的节点类型的XmlNode

AppendChild                      将指定节点添加到末尾(继承自XmlNode)

Save                                  将Xml文档保存到指定的文件

Load                                  从指定的URL加载Xml文档

LoadXml                            从指定的字符串加载Xml文档

XmlElement

SetAttribute                       设置具有指定名称的特性的值

HasAttributes                    判断该元素节点是否具有属性

GetAttribute                       返回具有指定名称的属性值

(2)XML数据的生成步骤

在Unity引擎中如何生成本地XML数据?

第一步:引入C#的命名空间 System.Xml

第二步:生成XML文档(XmlDocument类)

第三步: 生成根元素(XmlElement类) 添加给文档对象

第四步:循环生成子元素添加给父元素

第五步:将生成的XML文档保存

(3)XML解析步骤

在解析时注意, 需要根据Xml文件的结构创建好对应的数据模型,去接受解析出来的数据!!!

Json的存储与解析

Json一般使用两个类库,一个System.Json(便于Json生成),一个是LitJson(便于Json解析)

Json生成

void LitCtreatJson()
    {
        JsonData hero = new JsonData();
        hero["HeroName"] = "诺克萨斯";
        hero["Hp"] = 100;
        hero["attack"] = 40;
        hero["Skills"] = new JsonData();

        JsonData skill1 = new JsonData();
        skill1["KeyCode"] = "Q";
        skill1["Name"] = "大杀四方";
        skill1["Mp"] = 20;
        skill1["cd"] = 8;
        hero["Skills"].Add(skill1);

        JsonData skill2 = new JsonData();
        skill2["KeyCode"] = "W";
        skill2["Name"] = "致残打击";
        skill2["Mp"] = 40;
        skill2["cd"] = 5;
        hero["Skills"].Add(skill2);

        JsonData skill3 = new JsonData();
        skill3["KeyCode"] = "E";
        skill3["Name"] = "无情铁手";
        skill3["Mp"] = 10;
        skill3["cd"] = 9;
        hero["Skills"].Add(skill3);
        JsonData skill4 = new JsonData();
        skill4["KeyCode"] = "R";
        skill4["Name"] = "诺克萨斯断头台";
        skill4["Mp"] = 120;
        skill4["cd"] = 60;
        hero["Skills"].Add(skill4);
    }

Json解析

 void LitParseJson()
    {
        FileInfo file =new FileInfo(Application.dataPath + "/LoL.json");
        StreamReader sr = new StreamReader(file.OpenRead(), Encoding.UTF8);
        string content = sr.ReadToEnd();
        JsonData data= JsonMapper.ToObject(content);
        foreach (JsonData item in data["Skills"])
        {
            print(item["name"]);
        }
        Hero hero;
        hero =  JsonUtility.FromJson<Hero>(content);
        sr.Close();
        sr.Dispose();
    }
时间: 2024-11-24 05:41:30

Unity3d数据存储 PlayerPrefs,XML,Json数据的存储与解析的相关文章

Silverlight项目笔记7:xml/json数据解析、MVVM下实现多级树形结构TreeView、忽视引用类型导致数据绑定错误、通过流或动态空间加载图片、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题

涉及的内容主要有: 1.xml/json数据解析 2.多级树形结构TreeView 3.忽视引用类型导致数据绑定错误 4.通过流或动态空间加载图片 5.虚拟目录设置 6.silverlight安全机制引发的问题 7.webclient缓存问题 1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应节点的数据集合,再通过Element这个方法对数据集合进

iOS开发笔记3:XML/JSON数据解析

这篇主要总结在iOS开发中XML/JSON数据解析过程用到的方法.XML数据解析主要使用SAX方式的NSXMLParser以及DOM方式的GDataXML,JSON数据解析主要使用NSJSONSerialization. 1.XML解析之NSXMLParser NSXMLParser是iOS原生的XML解析方式,采用SAX方式进行解析,特点是解析的时候从根元素开始,按顺序依次对每一个元素进行解析. 以下图所示XML文档为例进行解析 (1)首先是实例化一个NSXMLParser,设置代理监听解析过

JavaScript实现本地数据简单存取以及Json数据存取

1.判断本地存储是否可用: if(window.localStorage) { // localStorge可用 }else { // localStorge不可用 } 2.存储数据: // 获取本地存储对象 var localStorage =window.localStorage; // 存储 localStorage.setItem("key",content); 3.取出数据 var myKey =localStorage.getItem("key"); 4

iOS 本地可以构造假数据,并转换为json数据

// 当服务端接口没做好时,本地可以构造假数据,并转换为json数据 NSError *error; NSString *dataStr = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"indEditor" ofType:@"txt"] encoding:NSUTF8StringEncoding error:&error]; NSData *jsonD

IOS中本地存储和查看json数据

1.代码创建json文件,并保存到本地 第一步.设置json文件的保存路径 NSString *filePath = [NSHomeDirectory() stringByAppendingString:@"/Documents/myJson.json"]; NSLog(@"%@",filePath); 第二步.准备存储数据 NSMutableArray *arr = [[NSMutableArray alloc]init]; //用来盛放数据的value NSDi

iOS开发——XML/JSON数据解析

除了XML和Json,文中还涉及到的一些知识:第三方类库的使用,获取本地文件内容,网站API使用,GCD多线程编程,不做详细介绍,在代码出现的地方会注明. 先安利一波: Json XML 大数据时代,我们需要从网络中获取海量的新鲜的各种信息,就不免要跟着两个家伙打交道,这是两种结构化的数据交换格式.一般来讲,我们会从网络获取XML或者Json格式的数据,这些数据有着特定的数据结构,必须对其进行解析,得到我们可以处理的数据.所谓“解析”,就是从事先规定好的格式串中提取数据.解析的前提是数据的提供方

GSON转换日期数据为特定的JSON数据

通过JSON传递数据的时候经常需要传递日期,Java中可以通过GSON将日期转换为特定格式的JSON数据. 1.普通的GSON转换日期 public void query(HttpServletRequest request, HttpServletResponse response, RegisterService service) throws Exception { Integer id = Integer.parseInt(request.getParameter("id"))

AJAX MVC 服务器返回Json数据,客户端获取Json数据

<> 控制器 Controller using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Script.Serialization; namespace MvcApplication2.Controllers { public class HomeController : Controller { pu

combobox远程加载数据的总结和Json数据的小结

1.从后台返回请求加载Combobox下拉框数据 html部分1 <select name="mateBelongZ" id="mateBelongZID" style="width:142px;height:20px;font-size:13px;border:1px solid teal"> 2 </select> js部分 1 $.ajax({ 2 url : rootPath+'/jasframework/ycsy