RPGMakerMV探秘08-插件分析1(添加鸣谢)
在RPGMakerMV探秘07-游戏标题界面中,我们对标题界面有了一个初步的认识,本文通过一个插件实例,来巩固下标题界面。
本文将使用MOG_Credits.js插件进行分析,这是一个在标题界面中提供“鸣谢”命令的插件。
插件的使用方法我们就不赘述了,我们主要看下插件的代码。

写代码是个技术活,同时也是个艺术活儿。一份好的说明文档,一段详细的注释或者良好的代码风格,能够让使用者或者自己赏心悦目,对于代码的逻辑也能相对较快的分析出来。
闲话少说,上图看到是注释部分,一般包括插件描述、基本参数描述、帮助信息、资源路径及版本信息等。从上面这一段描述我们就能清楚的了解到,插件的作用,使用方法等。当然这不是一个强制性的约束,每个人都有自己的风格,但是我们最好能形成自己的风格,提高代码的可阅读性。
接下来进入正题:

我们在使用插件的时候,经常都会设置一些参数。而这些插件的相关参数就会随着插件的启用存储在plugins.js中。plugins.js中的数据是完全由RPGMaker生成的,没有特殊情况,不会主动去编辑这个文件。每个启用的插件都会生成一条json串,其中一个对象parameters就存储了开发者设置的关于该插件的参数。而上文的代码便是读取参数值。
在RPGMakerMV探秘07-游戏标题界面中,我们知道在标题界面命令窗口中新加一个目录,需要做三件事,1、commandList中新加命令
2、commandWindow中新加事件处理
3、事件处理的具体操作内容
下面我们根据这三条分别看下对应代码:

commandList是由Window_TitleCommand的makeCommandList创建的,这里重写这个方法,加上我们自己的命令。但是在这之前调用了原来的makeCommandList,因为这里面还创建了包括了“开始游戏”、“继续游戏”等命令。这里还使用了上文中我们读取到的参数。

commandWindow的重写与commandList大同小异,都是调用父类方法,然后新增自己的改动。不影响原始功能,又实现了自己的定制化需求。

该部分为先关闭了命令窗口,然后用场景管理器SceneManager的push操作切换到了Scene_MCredits场景中。push操作我们可以去rpg_managers.js中去看实现,将现场景压入栈中,然后使用goto切换场景,如果需要切回来,则可以使用pop将栈顶第一个场景弹出,回到原场景。
RPGMaker的原始场景都定义在rpg_scene.js中,Scene_MCredits并不属于原始场景,这个场景是开发者自定义的,接下来的代码便是Scene_MCredits场景的定义。

首先创建了Scene_MCredits的构造函数,构造函数基本没做什么。通过Object.create实现对Scene_MenuBase的继承,Scene_MenuBase是菜单类场景的父类,具体要继承哪个父类,需要根据自己场景所需实现的功能而定,同事时也需要了解rpg_scene中各个场景的一些基础功能。如果再往上追溯,他们都有共同的基类Scene_Base(其实Scene_Base也是继承Stage),这里就不再展开。

这里我们看到了一个熟悉的方法create,上一篇文章我们在分析Scene_Title的切换过程时,我们提到过create方法。在重写的create方法中,新增了自己的需求createPictureCredit。
而该方法的具体实现就是在场景中添加各种资源,例如资源文件、场景中位置、资源透明度等。

该部分pressAnyKey是对触摸及按键的检测,供下方的update调用。同样我们从上篇文章知道了周期调用函数update的作用。他会在场景生命周期内,不停的进行调用。在不停调用的情况下:
this.pictureCredit[1].opacity += 1;//透明不断改变
this.pictureCredit[1].y -= this._creditsSpeed;//图片位置不断上移
如果触发按键检测,pop到标题界面。
如果图片超出画面,pop到标题界面。
如果设置了背景图片,设置为不可见。
通过周期函数update的调用,一个完整的“鸣谢”场景便“动”了起来,还能接收玩家的操作。
以上便是MOG_Credits.js的分析,通过插件的使用,再配合代码的分析,能够更快了解插件的运作机制。
下篇我们再利用插件把标题界面做得更“酷炫”一点,同样基于代码分析。
注:以上分析均为作者兴趣出发,自学有感,对于js的认知还存在不足或者偏差,如有错误,欢迎指正。