RPGMakerMV探秘07-游戏标题界面
通过RPGMakerMV探秘04-游戏加载初窥,我们已经知道,场景管理器SceneManager在处理完Scene_Boot后,Scene_Boot这个场景的生命周期也就结束了,紧接着就会调用goto函数,来到Scene_Title,Scene_Title算是玩家接触到真正意义上能够周期性update的场景。
本文我们就来研究下Scene_Title这个场景,还是从代码开始,构造函数并没有做什么。SceneManager的goto方法如下:

goto方法接收一个场景类,将场景对象赋值给_nextScene变量。这里讨论的是Scene_Title,当然参数sceneClass就是Scene_Title。
之后SceneManager会调用update方法,我们关注updateMain方法,会发现,其中又调用了changeScene和updateScene。

我们能看到changScene中,做了一些场景切换的动作,最重要的是,调用了Scene_Title的create方法,那我们回过头来看下,Scene_Title中create方法又做了哪些操作。

create方法是一个场景的初始化方法,被各个场景重载,Scene_Title中create主要干了以上一些事情,玩家肉眼所见的就是标题界面的背景图、文字标题、命令窗口(开始游戏、继续游戏等组成的一个小窗口)。
我们先回到上面提到updateScene方法:

updateScene中会执行start方法,但是必须等待资源异步加载完毕。之后便会执行update方法。如果玩家不做操作,那么将停留在标题界面不停刷新。
接下来我们来了解下,作为我一样的初学者,能对标题界面做什么。
初始化方法中有个createBackground方法,他主要就是创建了标题界面的背景。在不使用插件的情况下,使用系统设置的背景图。

使用MV数据库设置标题背景的地方如图:

如果你有设计好的背景图,可以直接放到img\titles1和img\titles2中,一般情况下titles1为整体背景图,titles2中为边框或者装饰,会覆盖在titles1上。
设置完背景图,当然需要一个响当当的游戏标题,比如:XXX伏魔记或者XXX大冒险等等。createForeground方法便是绘制文字标题的。

是否绘制和标题文字均在数据库的系统标签中进行设置。
如果你对标题的位置、字体大小、外边缘颜色等有自己的要求,可以修改以上代码达到效果。(注1:该部分为引擎源码,修改只做学习用,在真正开发过程中,是不建议修改引擎源码的。注2:文字标题很有违和感,比较常见的还是通过软件设计的图片形式标题,后面再说)
接下来,我们看下玩家能操作的命令窗口。默认情况下,命令窗口如下:

其对应的代码大致如下:

开始游戏、继续游戏、设置分别对应三个不同的处理方法。每个方法最后都是进行场景的切换,但是我们看到分别用了goto和push,我们可以理解goto就是一去不复还,切换了就切不回来了,而push会进行一个压栈操作,切换至另外一个场景时,仍然保留上一个场景,为玩家切回来留了一手。
如果我们想在命令窗口下方再加一行目录,比如“鸣谢”命令,我们该怎么操作呢?
首先肯定是在createCommandWindow中新增一行,这里因为是测试,就把handler的第一个参数设置为‘test’,绑定的操作我们可以直接使用“设置”的方法。

当然这样还不够,这里只是设做了一个操作与标签的绑定,我们看到第一行,这个命令窗口,我们是通过Window_TitleCommand创建的。

在命令清单中加上我们想要的命令,才能在界面上显示相应的命令,addCommand中第一个参数即是命令显示文字,第二个参数作为该命令的标签,与createCommandWindow中handler一致。
修改完成后,我们的命令窗口界面如下:

选择“测试”后点击,与“设置”效果一样。
再次说明:上述修改的代码均在引擎核心源码中进行,只是为了学习方便,开发过程中谨慎操作。
好了,本文的坑先挖到这里,欢迎喜欢编码,喜欢游戏制作的小伙伴交流讨论。