-本系列文章默认读者使用过RMXP并对Ruby的语法有一定的掌握。
-RMXP工程自带的脚本系统使用的是RGSS1。
-本系列文章使用的脚本是经过紫苑工作室汉化的版本。RXMP版本1.0.3,Ruby1.8.1,RGSS1.0.3。
-我接触RMXP大概是在上初一的时候,接触66RPG是同期。Ruby是我接触过的第二门编程语言,那个时候为了看懂RGSS1我试着去学习日语,但是实在记不住五十音图……也是因为Ruby我现在还有莫名其妙就想给函数名后面加个?的想法。很遗憾现在Ruby好像还是一门冷门语言,我本来以为它能有与Python相同的地位。
RGSS(Ruby Game Scripting System),直译为Ruby游戏脚本系统,是RM系列内部使用的特殊Ruby扩展库。
RMXP中的脚本文件默认为Script.rxdata,而不是传统的.rb文件。
Ruby扩展名为.rb的文本文件通常能作为脚本直接运行,然而RGSS中使用独特的形式将脚本压缩成了一个单一文件 。这个文件如果不使用RPGXP 的脚本编辑器是无法编辑的。其中数据由多个组构成,按照目录的顺序从上到下依次运行。(摘自RMXP使用手册)
注释中部分为原版的注释(大部分从头开始的注释),部分为我的注释(所有从语句后开始的注释和一部分从头开始的注释)。由于头条不能显示粗体,这个系列又在我入驻头条之前就写了一部分,所以前几节里的注释很难区分。后续章节我的注释会以两个#开头。
虽然被放在最后运行,但是我想首先解析Main。因为Main是游戏运行实际上的入口函数(或者你说是第一个执行的部分也可以),我们从Main开始实际把控整个游戏的运行。
#==============================================================================# ■ Main#------------------------------------------------------------------------------# 各定义结束后、从这里开始实际处理。#==============================================================================begin # 准备过渡 # 设置系统默认字体 Font.default_name = (["黑体"]) #修改游戏字体的默认值为黑体 Graphics.freeze #准备渐变,固定现在的画面(也就是冻结画面) # 生成场景对像 (标题画面) $scene = Scene_Title.new #给全局变量$scene赋值 为Scene_Title类的实例 # $scene 为有效的情况下调用 main 过程 while $scene != nil $scene.main end # 淡入淡出 Graphics.transition(20) #淡入淡出方法,参数为渐变帧数 rescue Errno::ENOENT #rescue表示捕获异常 访问Errno类中的ENOENT常量的值 # 补充 Errno::ENOENT 以外错误 # 无法打开文件的情况下、显示信息后结束 filename = $!.message.sub("No such file or directory - ", "") #$!后接异常信息 print("找不到文件 #{filename}。 ")end