unity3d 本地存储用什么方式存储游戏数据比较好

【Unity3D游戏开发】—— PlayerPrefs类实现本地持久化数据存储 - 推酷
【Unity3D游戏开发】—— PlayerPrefs类实现本地持久化数据存储
在很多游戏中都会有“存储进度”,“读取进度”等菜单,或者当我们进入下一个场景时有些数据需要带入下一个场景。这就需要数据储存。Unity中提供了一个用于本地持久化保存于读取数据的类——PlayerPrefs。 它是以键值对的形式将数据保存在文件中。
下面来看看PlayerPrefs的简单用法。、
//得到存储的数据
Grade = PlayerPrefs.GetFloat(&mGrade&, 0.0f).ToString();
//获取浮点型
Age = PlayerPrefs.GetInt(&mAge&, 0).ToString();
//获取整型
Name = PlayerPrefs.GetString(&mName&, &&);
//获取字符串
//储存数据
PlayerPrefs.SetString(&mName&, Name);
//设置字符串
PlayerPrefs.SetInt(&mAge&, int.Parse(Age)); //设置整型
PlayerPrefs.SetFloat(&mGrade&, float.Parse(Grade));
//设置浮点型
从上面例子就反应了PlayerPrefs的基本特征
1.存储方式以键值对存储,类似于数据字典
2.读取也是以键值对来读取,若无则返回默认值
3.PlayerPrefs类可保存三种类型,浮点型,整型,字符串型.
下面是一个小例子,在场景1输入数据,跳转到场景2来显示数据。
场景1代码:
using UnityE
using System.C
public class Scene1 : MonoBehaviour {
//储存持久化数据显示
//可以保存3种类型,浮点型,整型,字符串型
public string G
public string A
public string N
//图片贴图
void Start()
//得到存储的数据
Grade = PlayerPrefs.GetFloat(&mGrade&, 0.0f).ToString();
Age = PlayerPrefs.GetInt(&mAge&, 0).ToString();
Name = PlayerPrefs.GetString(&mName&, &&);
void OnGUI()
//一张图片贴图
GUI.DrawTexture(new Rect((Screen.width - image.width) / 2, 20, 120, 120), image);
//输入姓名
GUILayout.Label(&----请输入姓名-----&, GUILayout.Height(25));
Name = GUILayout.TextField(Name, GUILayout.Height(25));
//输入年龄
GUILayout.Label(&----请输入年龄-----&, GUILayout.Height(25));
Age = GUILayout.TextField(Age, GUILayout.Height(25));
//输入成绩
GUILayout.Label(&----请输入成绩-----&, GUILayout.Height(25));
Grade = GUILayout.TextField(Grade, GUILayout.Height(25));
//提交并跳转至下一个场景
if (GUILayout.Button(&提交&,GUILayout.Height(25)))
//储存数据
PlayerPrefs.SetString(&mName&, Name);
PlayerPrefs.SetInt(&mAge&, int.Parse(Age));
PlayerPrefs.SetFloat(&mGrade&, float.Parse(Grade));
//跳转到场景2
Application.LoadLevel(&scene2&);
场景2代码:
using UnityE
using System.C
public class Scene2 : MonoBehaviour {
//储存持久化数据显示
//可以保存3种类型,浮点型,整型,字符串型
public string G
public string A
public string N
//图片贴图
void Start()
//得到存储的数据
Grade = PlayerPrefs.GetFloat(&mGrade&, 0.0f).ToString();
Age = PlayerPrefs.GetInt(&mAge&, 0).ToString();
Name = PlayerPrefs.GetString(&mName&, &&);
void OnGUI()
//一张图片贴图
GUI.DrawTexture(new Rect((Screen.width - image.width) / 2, 20, 120, 120), image);
//显示名字
GUILayout.Label(&姓名: & + Name, GUILayout.Height(25));
//显示年龄
GUILayout.Label(&年龄: & + Age, GUILayout.Height(25));
//显示成绩
GUILayout.Label(&成绩: & + Grade, GUILayout.Height(25));
//清除数据
if (GUILayout.Button(&清除数据&, GUILayout.Height(25)))
PlayerPrefs.DeleteAll();
if (GUILayout.Button(&返回上一页&, GUILayout.Height(25)))
//返回场景1
Application.LoadLevel(&scene1&);
将上述代码分别绑定在两个场景的摄像机上即可
点击File -& Build Settings.. 添加这两个场景
然后Build and Run就能生成并运行了
我们的小例子就完成了。unity的数据存储还算是比较简单的。具体还有什么看不见的坑,以后掉进去了才会知道吧。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致给我们留言
地址:福建省晋江市青阳街道洪山路国际工业设计园纳金网
电话: 400-067-3919
(周一到周五, 周六周日休息)
设计师入口
查看: 1039|回复: 2
最后登录注册时间阅读权限90积分32965
资深设计师, 积分 32965, 距离下一级还需 17035 积分
纳金币32806 精华12
可能游戏已经运行了一段时间,里面有很多对象,他们可能相互关联(比如相互遮挡、挤压、并列、咬合),我应该如何保存这整个场景的状态,以便下次读取以后,场景能够复原?难道只能依次保存每个对象的所有属性才能实现?多谢大侠指点迷津!
最后登录注册时间阅读权限90积分23569
资深设计师, 积分 23569, 距离下一级还需 26431 积分
纳金币19915 精华62
学习了,虽然还是有难度,谢谢楼主的用心&&
最后登录注册时间阅读权限90积分30628
资深设计师, 积分 30628, 距离下一级还需 19372 积分
纳金币15527 精华123
学习了,谢谢楼主的用心
站长推荐 /1
纳金名模第141期躺椅3d模型:数量93个,大小为447MB。完全免费下载哦!这样的福利我和我的小伙伴们都惊呆了!!下载地址:
Powered by - X2.5
Narkii Inc.现在u3d中大型游戏读写数据的主流方式是什么?_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:65,976贴子:
现在u3d中大型游戏读写数据的主流方式是什么?收藏
火星时代作为专业unity3d研发培训机构,依靠多年游戏教学实力,让您快速成为u3d工程师.毕业月薪&12000起&.详情请点击&&&
都有吧,protocol buffer更好些
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或}

我要回帖

更多关于 unity3d json 存储 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信