Project1

标题: 如何制作游戏通关真结局后改变标题画面?【已解决】 [打印本页]

作者: 70pctcat    时间: 2022-11-10 15:22
标题: 如何制作游戏通关真结局后改变标题画面?【已解决】
本帖最后由 70pctcat 于 2022-11-12 12:41 编辑

搜索了很久好像没有找到mv的解决方法,也看不懂一些很复杂的脚本,T T求解,如何在通关了真结局之后能替换掉原有的标题画面?
作者: 小秋橙    时间: 2022-11-10 18:05
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))获取跨存档的全局属性(四个音量、总是跑步、记住指令),因此我们需要往里面添加一个新的属性作为条件。
具体操作方法为,新建一个插件,内容是:
JAVASCRIPT 代码复制下载
  1. (function() {
  2. ConfigManager.makeData = function() {
  3.     var config = {};
  4.     config.alwaysDash = this.alwaysDash;
  5.     config.commandRemember = this.commandRemember;
  6.     config.bgmVolume = this.bgmVolume;
  7.     config.bgsVolume = this.bgsVolume;
  8.     config.meVolume = this.meVolume;
  9.     config.seVolume = this.seVolume;
  10.     config.newGamePlus = this.newGamePlus; // 本行为新增内容,表示是否已通关一周目
  11.     return config;
  12. };
  13. ConfigManager.applyData = function(config) {
  14.     this.alwaysDash = this.readFlag(config, 'alwaysDash');
  15.     this.commandRemember = this.readFlag(config, 'commandRemember');
  16.     this.bgmVolume = this.readVolume(config, 'bgmVolume');
  17.     this.bgsVolume = this.readVolume(config, 'bgsVolume');
  18.     this.meVolume = this.readVolume(config, 'meVolume');
  19.     this.seVolume = this.readVolume(config, 'seVolume');
  20.     this.newGamePlus = this.readFlag(config, 'newGamePlus'); // 本行为新增内容,表示是否已通关一周目
  21. };
  22. Scene_Title.prototype.createBackground = function() {
  23.     if (ConfigManager.newGamePlus) {
  24.         $dataSystem.title1Name = 'Night'; // 比如说默认的标题图片是 'Castle',一周目通关后希望改成 'Night'
  25.         $dataSystem.title2Name = 'Floral'; // 同理,比如说默认的标题没有边框,一周目通关后加个金色框
  26.     }
  27.     this._backSprite1 = new Sprite(ImageManager.loadTitle1($dataSystem.title1Name));
  28.     this._backSprite2 = new Sprite(ImageManager.loadTitle2($dataSystem.title2Name));
  29.     this.addChild(this._backSprite1);
  30.     this.addChild(this._backSprite2);
  31. }
  32. })();

然后,在达成真结局的那个事件里,使用如下两行脚本:
ConfigManager.newGamePlus = true; // 标记已完成一周目通关
ConfigManager.save(); // 和四个音量等一起保存到-1号文件里
作者: 70pctcat    时间: 2022-11-11 22:23
小秋橙 发表于 2022-11-10 18:05
Scene_Title.prototype.createBackground = function() {
    this._backSprite1 = new Sprite(ImageManage ...

!!感激!!T T试了一次就成功了,非常感谢!!!!!!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1