Unity(游戏)中五种数据存储的方法

一、PlayerPrefs
unity3d提供了一个用于本地持久化保存与读取的类-------PlayerPrefs.工作原理很简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值(注:PlayerPrefs运用起来很方便,随时都可以存取与读取)。
Playerprefs类支持3中数据类型的保存和读取,分别是浮点型、整型和字符串型:
PlayerPrefs.SetInt();保存整型数据
PlayerPrefs.SetFloat();保存浮点型数据
PlayerPrefs.SetString();保存字符串型数据
PlayerPrefs.GetInt();读取整型数据
PlayerPrefs.GetFloat();读取浮点型数据
PlayerPrefs.GetString();读取字符串型数据
二、读取普通文本资源:TextAsset

TextAsset text=(TextAsset)Resources.Load("unity3d");
Debug.Log(text.text);

在Project窗口的根目录创建Resources文件夹,然后把名字为unity3d.txt的文件夹的文件放在Resources文件夹下就可以读取到。
三、Json
1.JSON 语法规则
(1)对象表示为键值对

      Dictionary<key,value>  dic  = new Dictionary<key,value>();dic[0] = "Jack";string temp = dic[0];形式:{"firstName": "Json"}{"firstName": "Jack"}键值对之间以冒号连接

(2)数据由逗号分隔
{“firstName”: “Jack”,“middleName”:“Nigulas”}
(3)花括号保存对象
(4)方括号保存数组
“People”:[{“name”:“小红”,“age”:“16”,“grade”:“2”},{“name”:“小明”,“age”:“18”,“grade”:“2”}]
4)Json在线校验网站
http://www.bejson.com/
2.需要使用第三方插件,下载网址在https://sourceforge.net/projects/litjson/,下载之后将LitJson文件拖到自己工程的文件夹中,放在Plugins下。
两种解析方式及常见一个及多个对象的Json

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;public class JsonTest : MonoBehaviour
{private string jsonStr = "{'name':'孙悟空','age':50,'gender':'公','skill':'火眼金睛'}";// Use this for initializationvoid Start (){//ParJson();//ParJson2();//CreateJson();CreateJson02();}/// <summary>/// 第一种解析方式/// </summary>private void ParJson(){string jsonStr = "[{'name':'孙悟空','age':50,'gender':'公','skill':'火眼金睛'}," +"{'name':'猪八戒','age':500,'gender':'公','skill':'九齿钉耙'}," +"{'name':'唐僧','age':23,'gender':'男','skill':'紧箍咒'}," +"{'name':'沙和尚','age':500,'gender':'公','skill':'禅杖'}]";TravelWestPerson[] quJingRens = JsonMapper.ToObject<TravelWestPerson[]>(jsonStr);if (quJingRens != null){for (int i = 0;i<quJingRens.Length;i++){Debug.Log(quJingRens[i].name+"  "+quJingRens[i].age+"  "+quJingRens[i].gender+"  "+quJingRens[i].skill);}}}/// <summary>/// 第二种解析方式/// </summary>private void ParJson2(){string jsonStr = "[{'name':'孙悟空','age':50,'gender':'公','skill':'火眼金睛'}," +"{'name':'猪八戒','age':500,'gender':'公','skill':'九齿钉耙'}," +"{'name':'唐僧','age':23,'gender':'男','skill':'紧箍咒'}," +"{'name':'沙和尚','age':500,'gender':'公','skill':'禅杖'}]";JsonData datas = JsonMapper.ToObject(jsonStr);for (int i=0;i<datas.Count;i++){JsonData data =  datas[i];//通过键值对的形式 获取  value值Debug.Log(data["name"]+"  "+data["age"]+" "+data["gender"]+" "+data["skill"]);}}/// <summary>/// 创建一个对象的Json/// </summary>private void CreateJson(){//new  对象TravelWestPerson baiLongMa = new TravelWestPerson("小白龙",500,"男","呼风唤雨");//对象转字符串string jsonStr = JsonMapper.ToJson(baiLongMa);Debug.Log(jsonStr);}/// <summary>/// 创建多个对象的Json/// </summary>private void CreateJson02(){string[] names = new string[] {"小白龙","大白兔","老龙王"};int[] ages = new int [] {500,3,5000};string[] genders= new string[] {"男","女","男"};string[] skills = new string[] {"鹰愁涧","吃萝卜","呼风唤雨"};//集合的JsonData data = new JsonData();//设置为数组类型data.SetJsonType(JsonType.Array);for(int i=0;i<names.Length;i++){//集合中的一个对象JsonData personData = new JsonData();//对这个对象进行赋值personData["name"] = names[i];personData["age"] = ages[i];personData["gender"] = genders[i];personData["skill"] = skills[i];data.Add(personData);}string strJson = data.ToJson();Debug.Log(strJson);}// Update is called once per framevoid Update (){}
}internal class TravelWestPerson
{public string name;public int age;public string gender;public string skill;public TravelWestPerson(string name,int age,string gender,string skill){this.name = name;this.age = age;this.gender = gender;this.skill = skill;}public TravelWestPerson(){}
}

四、XML存储
1)XML 被设计用来传输和存储数据。

2)XML 标签没有被预定义。您需要自行定义标签。

3)XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。

4)元素:
属性:

Anna
Smith

标签:元素 + 属性

5)声明
<?xml version="1.0" encoding="utf-8"?>

6)xml的书写开闭必须统一,又开有闭
所有 XML 元素都须有关闭标签

7)XML 标签对大小写敏感

下面两个标签不一样<Message>这是1</Message><message>这是2</message>
这是错误的<Message>这是1</message>

8)XML 必须正确地嵌套

9)XML 的属性值须加引号

10)XML 命名规则
XML 元素必须遵循以下命名规则:

名称可以含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符 “xml”(或者 XML、Xml)开始
名称不能包含空格
可使用任何名称,没有保留的字词。

11)XML 属性必须加引号
属性值必须被引号包围,不过单引号和双引号均可使用

<?xml version="1.0" encoding="utf-8"?>
<root>    <persons><person id = "1"><name>唐伯虎</name><age>23</age><skill>撩妹</skill></person><person id = "2"><name>祝枝山</name><age>26</age><skill>神鸟凤凰图</skill></person><person id = "3"><name>文征明</name><age>25</age><skill>四绝的全才</skill></person><person id = "4"><name>徐祯卿</name><age>25</age><skill>号称文雄</skill></person></persons>
</root>

五、Sqlite牵涉到的Sqlite语句

 //创建表
create table UESR(uid integer,name text,score text);
-----------------------------------------------------------------------------------------
//列出表名
.table                   (不加;分号的)
-----------------------------------------------------------------------------------------
//插入信息  增加信息
insert into USER(name,score) values('lisi','89');
//插入信息
insert into USER values(1,'zhangsan',89);
-------------------------------------------------------------------------------------
//以属性删除  删除一行的数据
delete from USER where score = 4;
---------------------------------------------------------------------------------------
//修改
update USER set score =75 where name='lisi';---------------------------------------------------------------------------------------
//展示表中的所有信息
select*from USER;//主键自增
create table if not exists USER(uid integer primary key autoincrement,name text,score text);//返回有几行
select count(*) from USER;
//返回总和
select sum(score)from USER;
select*from USER where score >69 and score<95;
select *from USER limit 2;//前两条
select *from USER order by score;//正序排
select *from USER order by score desc;//倒序排
select *from USER order by score desc limit 1;//倒数第一个//删除表格
drop table USER;

Unity(游戏)中五种数据存储的方法相关推荐

  1. [ Android 五种数据存储方式之二 ] —— 文件存储数据

    关于文件存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的. 文件可用来存放大量数据,如文本.图片.音 ...

  2. [ Android 五种数据存储方式之一 ] —— SharedPreferences存储数据

    SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数. 主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceS ...

  3. redis中几种数据存储方式的比较

    2019独角兽企业重金招聘Python工程师标准>>> 这是慕课网一门课程的提问,有一个回答很不错,我就摘抄过来了.链接 原问题: 为什么不用redis的hash来存储对象? 二进制 ...

  4. javascript中五种常见的DOM方法

    getElementById将返回一个与那个有着给定id属性值的元素节点对应的对象. <html xmlns="http://www.w3.org/1999/xhtml"&g ...

  5. Android中的5种数据存储方式

    Android中的5种数据存储方式 Android中的5种数据存储方式 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPref ...

  6. java简述常见的布局极其特点_请简要说明 Android 中五种常见布局的特点。_学小易找答案...

    [简答题]请简要说明有序广播和无序广播的区别 [简答题]请简要说明 Android 程序结构中 AndroidManifest.xml 的功能? [简答题]简述李村站人工办理进路的作业过程. [简答题 ...

  7. 细节分析Linux中五种IO模型和三种实现方式

    I/O介绍 操作系统分为两种I/O 网络IO:本质是socket读取 磁盘IO:DMA操作读取 C/C++Linux服务器开发知识点 内容包括C/C++,Linux,Nginx,ZeroMQ,MySQ ...

  8. 五维数据存储技术:容量可达蓝光3000倍

    英国南安普顿大学科学家近日开发出一种新的数据存储技术,利用玻璃中的微型纳米结构来编码信息.基于这一技术,标准尺寸光碟能保存约360TB的数据,而在温度高达190摄氏度的环境中可维持长达138亿年.这一 ...

  9. 深入理解C++中五种强制类型转换的使用场景

    深入理解C++中五种强制类型转换的使用场景 1.C风格的强制类型转换 2.C++风格的强制类型转换 2.1.static_cast 2.1.1.用于基本内置数据类型之间的转换 2.1.2.用于指针之间 ...

最新文章

  1. 一个简单的HTTP通讯的例子,使用了CInternetSession,CHttpConnection,CHttpFile三个类
  2. flink的savepoints和checkpoints以及state Query(暂时无法全部完成)
  3. 洛谷 2921 记忆化搜索 tarjan 基环外向树
  4. 不同的容器里实现 RadioButton的单选
  5. 数据校验器架构模式组
  6. python用import xlwt出现红字_如何用python处理excel
  7. 芯原创始人戴伟民:嵌入式人工智能与芯粒的历史机遇
  8. vim 编辑器 bash文件测试
  9. Vue.js 的开始!
  10. MaxCompute 2.0 生态开放之路及最新发展
  11. 微信小程序中相机api_微信拍照翻译, 使用小程序拍照翻译API功能
  12. heka 输出到mysql_让Heka支持lua的io操作和os操作
  13. 第六届山东省赛总结贴
  14. Android限制录制屏幕无声音,哪一个安卓录屏软件可以录制系统的声音
  15. python怎么处理通达信ctp接口数据?
  16. 2021年中国纺织行业产业链发展分析:纺织行业下游零售市场逐渐恢复增涨[图]
  17. 桂林理工大学南宁分校php实训,桂林理工大学南宁分校冶金化工虚拟仿真实验教学中心...
  18. c#代码实现打印机打印文件
  19. visio 2019如何绘制圆角矩形
  20. 岩板铺地好吗_岩板可以铺贴地面吗

热门文章

  1. DrLLPS (相分离数据库): 第一个注释全面的液液相分离相关蛋白质数据库 (liquid-liquid phase separation database)
  2. 全新UI众人帮任务帮PHP源码 悬赏任务抖音快手头条点赞源码 带三级分销可封装小程序
  3. ANSYS - 表格加载方法
  4. Vue清除定时器优化方案
  5. druid.io集群与tranquility对zookeeper的使用(2)
  6. 武汉科技大学计算机复试机试,2019年武汉科技大学考研复试及录取工作方案
  7. 上海某大型企业因盗版Catia被罚千万
  8. amd linux raid,RAID的详解
  9. 人生没有白读的书,每一本都算数~
  10. 官方对于,Mozilla公司开发的FireFox浏览器,评价有多好!