Project1
标题: 有没有将变量写入到global.rpgsave文件的方法 [打印本页]
作者: sonicdonggua 时间: 2017-6-11 15:03
标题: 有没有将变量写入到global.rpgsave文件的方法
最近打算写一个二周目的插件,需要将一些变量(不是游戏的开关或者变量)写入到global.rpgsave中。Yanfly的我看过了,并不是写入到global.rpgsave继承的,所以想问一下大家有没有办法实现?
作者: 铅笔描绘的思念 时间: 2017-6-11 17:34
一直翻一直翻会看到Datamanager有一个没用过的方法
DataManager.saveGlobalInfo = function(info) {
StorageManager.save(0, JSON.stringify(info));
};
DataManager.saveGlobalInfo = function(info) {
StorageManager.save(0, JSON.stringify(info));
};
调用这句
StorageManager.save(0, JSON.stringify(info));
StorageManager.save(0, JSON.stringify(info));
JSON.stringify(info)参见MDNJSON.stringify
也就是说可以把自己写一个对象用来保存一些变量然后存到global.rpgsave。。。理论上是可以的
作者: sonicdonggua 时间: 2017-6-12 09:58
唔,似乎不行,这样的话游戏不认为这是一个合理的存档了
作者: 怠惰な騎士 时间: 2017-6-12 16:09
本帖最后由 怠惰な騎士 于 2017-6-12 17:37 编辑
----- 2017-6-12 17:37:18
没搞错的话,RMMV使用“头信息”+“实际数据”的方式保存游戏数据。
通过DataManager.makeSavefileInfo生成头数据
通过DataManager.makeSaveContents生成实际数据
并且在DataManager.saveGameWithoutRescue中将上述两个数据分别保存到global.rpgsave和file{N}.rpgsave中。
DataManager.saveGameWithoutRescue通过“savefileId”来为globalInfo建立索引,而其中“0”这个索引是没有被用过的。
所以可以通过修改DataManager.saveGameWithoutRescue,在保存的时候,额外使用globalInfo[0]记录需要全局保存的信息。
代码参考:
var globalInfo = this.loadGlobalInfo() || [];
globalInfo[savefileId] = this.makeSavefileInfo();
globalInfo[0] = this.makeGlobalSavefileInfo(); // 假设this.makeGlobalSavefileInfo()是你所写的记录需要全局保存的信息的方法
this.saveGlobalInfo(globalInfo);
var globalInfo = this.loadGlobalInfo() || [];
globalInfo[savefileId] = this.makeSavefileInfo();
globalInfo[0] = this.makeGlobalSavefileInfo(); // 假设this.makeGlobalSavefileInfo()是你所写的记录需要全局保存的信息的方法
this.saveGlobalInfo(globalInfo);
如果要使用全局保存的信息,则调用DataManager.loadGlobalInfo()取[0]索引即可。
----- 旧回复
RMMV会记录游戏的进行时间以及保存过的总次数,这两个属性条是全局数据。
你可以找找看这两个数据的储存位置(大概在Game_System里),然后给储存对象添加额外属性条就行。
作者: sonicdonggua 时间: 2017-6-12 20:43
感谢,已经解决了
作者: 铅笔描绘的思念 时间: 2017-6-12 20:58
本帖最后由 铅笔描绘的思念 于 2017-6-12 21:01 编辑
晚上看了应该没问题啊
先删了save文件夹
然后控制台试了两条没毛病;
关了游戏再开继续调用load的
但是发现 并不会保存对象名 第二次也是一样的load返回的都是Object的属性列表
也就是单纯的把对象属性保存到global.rpgsave里 就是调用一次save就覆盖掉global.rpgsave简单测试 欢迎(雾)打脸
作者: sonicdonggua 时间: 2017-6-12 23:56
解决了,一个比较简单的办法就是利用DataManager.saveGlobalInfo(globalInfo)命令。以及globalinfo[0]不会用于保存存档的作用
方法:在脚本编辑中输入var globalInfo = []
globalInfo[0] = x;
DataManager.saveGlobalInfo(globalInfo);
就可以使用
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |