目录
写在前面
-本系列文章默认读者使用过RMXP并对Ruby的语法有一定的掌握。
-RMXP工程自带的脚本系统使用的是RGSS1。
-本系列文章使用的脚本是经过紫苑工作室汉化的版本。RXMP版本1.0.3,Ruby1.8.1,RGSS1.0.3。
-我接触RMXP大概是在上初一的时候,接触66RPG是同期。Ruby是我接触过的第二门编程语言,那个时候为了看懂RGSS1我试着去学习日语,但是实在记不住五十音图……也是因为Ruby我现在还有莫名其妙就想给函数名后面加个?的想法。很遗憾现在Ruby好像还是一门冷门语言,我本来以为它能有与Python相同的地位。
RGSS
RGSS(Ruby Game Scripting System),直译为Ruby游戏脚本系统,是RM系列内部使用的特殊Ruby扩展库。
RMXP中的脚本文件默认为Script.rxdata,而不是传统的.rb文件。
Ruby扩展名为.rb的文本文件通常能作为脚本直接运行,然而RGSS中使用独特的形式将脚本压缩成了一个单一文件 。这个文件如果不使用RPGXP 的脚本编辑器是无法编辑的。其中数据由多个组构成,按照目录的顺序从上到下依次运行。(摘自RMXP使用手册)
Main代码解析
注释中细体为汉化组注释(应该是翻译了原注释?),粗体为我的注释。(这篇文章是从我的个人博客里搬运过来的,代码在使用CSDN的代码模块之后全都是细体- -,反正注释是谁写的无所谓,读者能看懂代码的运行就可以了,大概在第十几节之后我的注释统一为##开头,以区分原注释)
虽然被放在最后运行,但是我想首先解析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