游戏蛮牛学习群(纯技术交流,不闲聊):539178957
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:547

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 248|回复: 10

[基本操作] unity 单机关卡信息存储修改

[复制链接]  [移动端链接]
3偶尔光临
281/300
排名
8024
昨日变化
81

1

主题

69

帖子

281

积分

Rank: 3Rank: 3Rank: 3

UID
238064
好友
1
蛮牛币
493
威望
0
注册时间
2017-9-7
在线时间
69 小时
最后登录
2018-8-16
发表于 2018-8-4 14:57:32 | 显示全部楼层 |阅读模式
5蛮牛币
unity C# 单机存储 问题
现在已知有一张关卡信息配置表:(先哪三个关卡做例子)关卡配置表:

id(关卡id)        isLock(是否解锁)        isPass(是否过关)
1                           true                                  false
2                           false                                  false
3                           false                                  false

我的需求是:    当我第一个关卡过关时,我需要修改关卡配置表里 第一关卡的 isPass 为true ,并且要修改第二个关卡的isLock 为true!

有什么方法实现我这个需求???

我没有做过单机游戏,不知道应该用什么形式处理这个需求;
我用了json做这个,C#处理json的写入方便,但是,修改特别麻烦。

我不知道单机应该用什么存储关卡信息比较方便;


各位大佬帮忙解决一下吧???谢谢各位!





回复

使用道具 举报

4四处流浪
364/500
排名
8628
昨日变化
90

1

主题

133

帖子

364

积分

Rank: 4

UID
231366
好友
4
蛮牛币
600
威望
0
注册时间
2017-7-10
在线时间
102 小时
最后登录
2018-8-16
发表于 2018-8-4 14:57:33 | 显示全部楼层
可以用xml    json    字节数组   ,unity自带的PlayerPrefs.GetInt

回复

使用道具 举报

3偶尔光临
281/300
排名
8024
昨日变化
81

1

主题

69

帖子

281

积分

Rank: 3Rank: 3Rank: 3

UID
238064
好友
1
蛮牛币
493
威望
0
注册时间
2017-9-7
在线时间
69 小时
最后登录
2018-8-16
 楼主| 发表于 2018-8-4 14:58:39 | 显示全部楼层
各位大佬帮我解答呀一定要,第一次做这个样子的不知道怎么处理!

回复

使用道具 举报

7日久生情
3802/5000
排名
158
昨日变化

0

主题

335

帖子

3802

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
6412
好友
0
蛮牛币
11890
威望
0
注册时间
2013-10-26
在线时间
1342 小时
最后登录
2018-8-14

活力之星

发表于 2018-8-5 23:42:42 | 显示全部楼层
你现在的规则是不是通过一关,下一个解锁,那直接用PlayerPrefs.GetInt("levelIsPass", 0),里面存储的是第几关已经通过了,那么下一关就是解锁状态,不用存json,通过关卡,就把这个数据更新,PlayerPrefs.SetInt("levelIsPass",当前通过的关卡),你看看对不对

回复

使用道具 举报

6蛮牛粉丝
1434/1500
排名
1620
昨日变化
5

8

主题

208

帖子

1434

积分

Rank: 6Rank: 6Rank: 6

UID
99182
好友
0
蛮牛币
1518
威望
0
注册时间
2015-5-10
在线时间
480 小时
最后登录
2018-8-16
发表于 2018-8-6 10:50:36 | 显示全部楼层
完全没必要用什么islock和ispass。。你就用Unity自带的PlayerPrefs类,设置一个变量,比如int unlockLevel = 0;  满足过关条件就 用代码: int tmp = PlayerPrefs.GetInt("unlockLevel") + 1;       PlayerPrefs.SetInt("unlockLevel",tmp);   不满足过关条件就不改变unlockLevel的值呀。。然后再选择关卡界面获取unlockLevel的值来决定可以点击前几个关卡按钮

回复

使用道具 举报

7日久生情
1655/5000
排名
1342
昨日变化
2

0

主题

35

帖子

1655

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
79366
好友
1
蛮牛币
2401
威望
0
注册时间
2015-3-13
在线时间
772 小时
最后登录
2018-8-16
发表于 2018-8-6 17:35:55 | 显示全部楼层
之前公司是做单机游戏,用的GameDataEditor插件,具体的实现也是使用PlayerPrefs类,你可以试试这个插件。

回复

使用道具 举报

3偶尔光临
281/300
排名
8024
昨日变化
81

1

主题

69

帖子

281

积分

Rank: 3Rank: 3Rank: 3

UID
238064
好友
1
蛮牛币
493
威望
0
注册时间
2017-9-7
在线时间
69 小时
最后登录
2018-8-16
 楼主| 发表于 2018-8-7 15:52:55 | 显示全部楼层
Z_Sprite 发表于 2018-8-5 23:42
你现在的规则是不是通过一关,下一个解锁,那直接用PlayerPrefs.GetInt("levelIsPass", 0),里面存储的是第 ...

谢谢大佬,我现在用json已经实现了我目前临时需要的功能。
我是通过修改json中的数据实现的。

回复

使用道具 举报

3偶尔光临
281/300
排名
8024
昨日变化
81

1

主题

69

帖子

281

积分

Rank: 3Rank: 3Rank: 3

UID
238064
好友
1
蛮牛币
493
威望
0
注册时间
2017-9-7
在线时间
69 小时
最后登录
2018-8-16
 楼主| 发表于 2018-8-7 15:55:16 | 显示全部楼层
安生李 发表于 2018-8-6 09:00
可以用xml    json    字节数组   ,unity自带的PlayerPrefs.GetInt

我还是用的json实现的。谢谢大佬解答!!!

回复

使用道具 举报

3偶尔光临
281/300
排名
8024
昨日变化
81

1

主题

69

帖子

281

积分

Rank: 3Rank: 3Rank: 3

UID
238064
好友
1
蛮牛币
493
威望
0
注册时间
2017-9-7
在线时间
69 小时
最后登录
2018-8-16
 楼主| 发表于 2018-8-7 15:56:55 | 显示全部楼层
Kasug 发表于 2018-8-6 10:50
完全没必要用什么islock和ispass。。你就用Unity自带的PlayerPrefs类,设置一个变量,比如int unlockLevel ...

谢谢大佬解答,我还是用的json解决的问题。因为还是需要存储一些关卡回答过得问题之类的。所以用playerPrefs有些局限。
[发帖际遇]: 风停云晓 乐于助人,奖励 2 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

3偶尔光临
281/300
排名
8024
昨日变化
81

1

主题

69

帖子

281

积分

Rank: 3Rank: 3Rank: 3

UID
238064
好友
1
蛮牛币
493
威望
0
注册时间
2017-9-7
在线时间
69 小时
最后登录
2018-8-16
 楼主| 发表于 2018-8-7 15:59:18 | 显示全部楼层
飞扬_520 发表于 2018-8-6 17:35
之前公司是做单机游戏,用的GameDataEditor插件,具体的实现也是使用PlayerPrefs类,你可以试试这个插件。 ...

谢谢大佬解答!因为我这个是临时需要存储本地,最后上线之前还是会改成联机游戏。在网上偶然发现有修改json的例子,自己试了两个小时,实现了我想要的功能。

回复

使用道具 举报

3偶尔光临
281/300
排名
8024
昨日变化
81

1

主题

69

帖子

281

积分

Rank: 3Rank: 3Rank: 3

UID
238064
好友
1
蛮牛币
493
威望
0
注册时间
2017-9-7
在线时间
69 小时
最后登录
2018-8-16
 楼主| 发表于 2018-8-7 16:05:46 | 显示全部楼层
我这个问题已经解决了。那么我怎么把这个帖子设置成已经解决呢?

解决步骤:
还是用的保存到json中

//1. 给json中的指定块赋值
jsonData["isUnlock"][i] = isLock;
//2. 保存到json文件中
//3. 需要同时修改多条数据时,修改完第一条保存之后,需要先读取一遍json文件(相当于要刷新一遍),然后,在修改保存第二条数据。(PS:注意,需要同时修改多条时,中间一定要先读取一次,不然第二条修改不进去的。亲测!!!)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表