学习记录:unity的json存储
1效果展示
2代码展示(备注很详细)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;//将类序列化到文件中,同时序列化到编辑器中
[System.Serializable]
public class PlayerCoin{public int count;public string name;public bool isWinner;
}//存储一系列类数据,必须创建一个链表,链表必须存在在类中,才能被序列化
public class PlayerCoinList
{public List<PlayerCoin> playerCoinList = new List<PlayerCoin>();
}public class DataSaveManager : MonoBehaviour
{public PlayerCoinList list = new PlayerCoinList();PlayerCoin knight; //保存骑士PlayerCoin wizzard; //保存巫师public Text knightCoin; //骑士的金币数量的显示文字public Text wizzardCoin; //巫师的金币数量的显示文字// Start is called before the first frame updatevoid Start(){//创建json数据,只需要创建一次就行// GenerateData();//数据的读取LoadDate();}// Update is called once per framevoid Update(){}#region 生成实例并赋初值void GenerateData(){knight = new PlayerCoin();knight.count = 0;knight.name = "Knight";knight.isWinner = false;wizzard = new PlayerCoin();wizzard.count = 0;wizzard.name = "Wizzard";wizzard.isWinner = false;list.playerCoinList.Add(knight);list.playerCoinList.Add(wizzard);}#endregion#region 金币增加按钮事件//按钮事件:点击按钮时金币数量的增加public void OnClickCoin(string _player){if (_player.Equals("Knight")){knight.count += 1;knightCoin.text = knight.count.ToString();}else if (_player.Equals("Wizzard")){wizzard.count += 1;wizzardCoin.text = wizzard.count.ToString();}}#endregion#region 数据存储void SaveData(){//将list转化成一个json文件string json = JsonUtility.ToJson(list,true);//设置保存的路径string filePath = Application.streamingAssetsPath + "/playCoinList.json";//文件的写入using(StreamWriter sw = new StreamWriter(filePath)){sw.WriteLine(json);sw.Close();sw.Dispose();}}#endregion#region 保存按钮事件public void OnClickQuit(){//数据的存储SaveData();//退出游戏UnityEditor.EditorApplication.isPlaying = false; //编辑器下退出游戏Application.Quit();}#endregion#region 数据的读取void LoadDate(){string json;string filePath = Application.streamingAssetsPath + "/playCoinList.json";//检测json文件是否存在if (File.Exists(filePath)){//json文件存在,直接进行数据读取using (StreamReader sr = new StreamReader(filePath)){json = sr.ReadToEnd();sr.Close();}//将json文件转化为内存中的一个变量list = JsonUtility.FromJson<PlayerCoinList>(json);//将读取的数据赋值knight = list.playerCoinList[0];wizzard = list.playerCoinList[1];//更新文本显示knightCoin.text = knight.count.ToString();wizzardCoin.text = wizzard.count.ToString();}else{//json文件不存在,先创建,再进行读取GenerateData();}}#endregion}
3Unity界面
脚本挂载在manager这个空物体上,对应的按钮添加对应的事件(注意:在金币增加按钮事件的添加时:输入的string的字符串必须与代码中一致)
4程序包链接
链接:https://pan.baidu.com/s/1a9x6Jmbh8o9L1Q54tqED6Q
提取码:jl98
(ps:在哔哩哔哩找了一个视频学习的,视频链接也放这了:【UNITY教程】第1集 使用JSON存储数据_哔哩哔哩_bilibili)
学习记录:unity的json存储相关推荐
- Java学习记录 Java与JSON
什么是JSON? JSON英文全称是 JavaScript Object Notation (JS对象简谱). JSON是一种使用了JS对象的书写语法的格式.[引用1] 它基于 ECMAScript ...
- 学习记录439@MySQL json 数据相关操作
问题引出 工作中,有个数据存储在mysql中是json字符串的形式,要修复数据,就需要操作这个json,笨办法是复制出来查找替换,简直是无奈,然后查询资料发现可以有函数直接操作json,意料之中. M ...
- TM4C123G开发板学习记录(八)存储和安全管理(上)
转载原博客:https://blog.csdn.net/zhb_sh/article/details/104522529
- Unity游戏优化[第二版]学习记录6
以下内容是根据Unity 2020.1.01f版本进行编写的 Unity游戏优化[第二版]学习记录6 第6章 动态图形 一.管线渲染 1.GPU前端 2.GPU后端 3.光照和阴影 4.多线程渲染 5 ...
- Unity游戏优化(第2版)学习记录8
Unity游戏优化[第二版]学习记录8 第8章 掌握内存管理 一.Mono平台 1.垃圾回收 2.内存碎片 3.运行时的垃圾回收 4.多线程的垃圾回收 二.代码编译 三.分析内存 1.分析内存消耗 2 ...
- 【C语言进阶深度学习记录】三十五 程序中的堆、栈以及静态存储区(数据区)
学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 在我之前学习底层的知识的时候,也写过相关的内容.可以对比的学习:[软 ...
- MySQL学习记录 (五) ----- 存储函数、存储过程和触发器
相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...
- Unity学习记录——模型与动画
Unity学习记录--模型与动画 前言 本文是中山大学软件工程学院2020级3d游戏编程与设计的作业7 编程题:智能巡逻兵 1.学习参考 除去老师在课堂上讲的内容,本次作业代码与操作主要参考了 ...
- unity学习记录第九章-过关和UI
unity学习记录第九章 要点 胜利过关 UI文本 笔记 1.创建一个脚本控制开门动画 2.在GameMannager里设置一个类类型的变量,用来传递方法 3.当列表中的收集物为0时开门通关 4.使用 ...
最新文章
- 《UX最佳实践:提高用户体验影响力的艺术 》一3.6 总结
- mycat mysql 主从切换_Mycat读写分离与主从切换
- ORACLE穿透防火墙问题
- PAT—— 害死人不偿命的(3n+1)猜想 (1001)
- windows linux 融合,Windows和Linux的设备驱动框架的对比融合研究
- 计算机无法用u盘重装系统,没有u盘电脑开不了机重装系统的方法步骤详细教程 - 系统家园...
- P4655-[CEOI2017]Building Bridges【斜率优化dp,CDQ分治】
- oracle服务说明
- Python 并行分布式框架 Celery
- python bokeh_浅谈python可视化包Bokeh
- fluentmigrator连接mysql_如何利用FluentMigrator实现数据库迁移
- ppt护理文书流程图_降低护理文件书写不完整率.ppt
- 教你如何批量下载QQ相册或是手机相册里原照片
- echarts横向柱状图
- iOS UITextField实时监听获取输入内容,中文状态去除预输入拼音
- 老毛桃 固态硬盘 系统迁移
- 面向对象开发期末复习概述(二)
- 计算机技术在企业管理中的应用浅论,浅谈计算机技术在现代企业管理中的应用...
- Dubbo源码分析(三) -- Dubbo的服务发现源码深入解析4万字长文
- 在学习计算机编程不写代码_使用代码创建:通过制作游戏来学习和教授计算机编程
热门文章
- 【实战案例】血红细胞目标检测项目
- python获取word页数_python,_如何在 Linux 上使用 Python 读取 word 文件信息(如页数)?,python - phpStudy...
- 使用POI删除Excel中的行(亲自实践)
- java实现加密解密抽象_DES加密解密-java实现
- 搜题接口创建 对接百万题库接口
- 拯救手残党!谷歌黑科技 AutoDraw 用人工智能帮你画画!
- Zookeeper基础知识(一)
- 使用python计算某年七月有四个周五,四个周二,七月一周几?
- android客服功能介绍,Android 客服工作台 SDK
- 这家消金公司增资至29亿(起底中国31家消金公司)