Scene_Title.prototype.createBackground = function() {
this._backSprite1 = new Sprite(ImageManager.loadTitle1($dataSystem.title1Name));
this._backSprite2 = new Sprite(ImageManager.loadTitle2($dataSystem.title2Name));
this.addChild(this._backSprite1);
this.addChild(this._backSprite2);
}
首先rpg_scenes.js第470行左右的这个函数会控制标题画面用的背景图和边框图,$dataSystem.title1/2Name是数据库中的选择好的文件名,因此我们需要在一定条件下将它们改成另外两张图片的名称。
这个条件是什么呢,rmmv可以通过JSON.parse(StorageManager.load(-1))获取跨存档的全局属性(四个音量、总是跑步、记住指令),因此我们需要往里面添加一个新的属性作为条件。
具体操作方法为,新建一个插件,内容是:
(function() { ConfigManager.makeData = function() { var config = {}; config.alwaysDash = this.alwaysDash; config.commandRemember = this.commandRemember; config.bgmVolume = this.bgmVolume; config.bgsVolume = this.bgsVolume; config.meVolume = this.meVolume; config.seVolume = this.seVolume; config.newGamePlus = this.newGamePlus; // 本行为新增内容,表示是否已通关一周目 return config; }; ConfigManager.applyData = function(config) { this.alwaysDash = this.readFlag(config, 'alwaysDash'); this.commandRemember = this.readFlag(config, 'commandRemember'); this.bgmVolume = this.readVolume(config, 'bgmVolume'); this.bgsVolume = this.readVolume(config, 'bgsVolume'); this.meVolume = this.readVolume(config, 'meVolume'); this.seVolume = this.readVolume(config, 'seVolume'); this.newGamePlus = this.readFlag(config, 'newGamePlus'); // 本行为新增内容,表示是否已通关一周目 }; Scene_Title.prototype.createBackground = function() { if (ConfigManager.newGamePlus) { $dataSystem.title1Name = 'Night'; // 比如说默认的标题图片是 'Castle',一周目通关后希望改成 'Night' $dataSystem.title2Name = 'Floral'; // 同理,比如说默认的标题没有边框,一周目通关后加个金色框 } this._backSprite1 = new Sprite(ImageManager.loadTitle1($dataSystem.title1Name)); this._backSprite2 = new Sprite(ImageManager.loadTitle2($dataSystem.title2Name)); this.addChild(this._backSprite1); this.addChild(this._backSprite2); } })();
(function() {
ConfigManager.makeData = function() {
var config = {};
config.alwaysDash = this.alwaysDash;
config.commandRemember = this.commandRemember;
config.bgmVolume = this.bgmVolume;
config.bgsVolume = this.bgsVolume;
config.meVolume = this.meVolume;
config.seVolume = this.seVolume;
config.newGamePlus = this.newGamePlus; // 本行为新增内容,表示是否已通关一周目
return config;
};
ConfigManager.applyData = function(config) {
this.alwaysDash = this.readFlag(config, 'alwaysDash');
this.commandRemember = this.readFlag(config, 'commandRemember');
this.bgmVolume = this.readVolume(config, 'bgmVolume');
this.bgsVolume = this.readVolume(config, 'bgsVolume');
this.meVolume = this.readVolume(config, 'meVolume');
this.seVolume = this.readVolume(config, 'seVolume');
this.newGamePlus = this.readFlag(config, 'newGamePlus'); // 本行为新增内容,表示是否已通关一周目
};
Scene_Title.prototype.createBackground = function() {
if (ConfigManager.newGamePlus) {
$dataSystem.title1Name = 'Night'; // 比如说默认的标题图片是 'Castle',一周目通关后希望改成 'Night'
$dataSystem.title2Name = 'Floral'; // 同理,比如说默认的标题没有边框,一周目通关后加个金色框
}
this._backSprite1 = new Sprite(ImageManager.loadTitle1($dataSystem.title1Name));
this._backSprite2 = new Sprite(ImageManager.loadTitle2($dataSystem.title2Name));
this.addChild(this._backSprite1);
this.addChild(this._backSprite2);
}
})();
然后,在达成真结局的那个事件里,使用如下两行脚本:
ConfigManager.newGamePlus = true; // 标记已完成一周目通关
ConfigManager.save(); // 和四个音量等一起保存到-1号文件里 |