词条 | RGSS |
释义 | RGSS全称是Ruby Game Scripting System,意指Ruby 游戏脚本系统,是应用面向对象的脚本语言 Ruby 开发 Windows 2D 游戏的系统。使用 RGSS,就和 C 语言等程序语言那样简单,能创建完全原创的游戏系统。Ruby 是一种初学者也能很容易使用,并且功能强大的高级语言。 RGSS日本的游戏制作软件Rpg Maker XP所使用的内部脚本系统,是ruby的扩展库。 RGSS(Ruby Game Scripting System),本文档是从 Ruby 的参考手册上摘录下使用 RGSS 的必要信息,加上关于 RGSS 独特方法的解说重编辑而成。对于 RGSS 的用户,在游戏程序设计方面不重要的部分进行了大幅删减,对各处描述也稍作了修改。因此在描述上可能会出现不正确的情况。作为 Ruby 的参考,请注意那些非常简单的东西。 RGSS中的脚本: 在RMXP(Rpg Maker XP)中,按F11就可以打开[脚本编辑器],左边的窗口是脚本列表,右边的窗口是脚本内容,左下角可以修改脚本名称。 在RMXP(Rpg Maker XP)中,游戏开始运行后,总是从最上边的脚本开始运行,依次往下,所以,经常把变量声明、类声明、函数声明、函数定义的脚本放在上面,而MAIN脚本总是放在最后。 RGSS语法变量类型: 全局变量 $var 实变量 @var 局部变量 var 常量 VAR 数据类型(注:RGSS中变量类型为弱变量,无需定义,只要初始化即可。): 数值型 0~9 浮点型 0~9,小数点 字符串型 加了""的在ASCII码表上的任意字符。 布尔型 true/false 空型 nil RGSS是Ruby的游戏脚本系统,所以关键字与Ruby原版大同小异,但也有少数修改,如: RGSS1.02J(或更高版本)中,puts()函数功能被简化为p,添加了print函数, RGSS1.03J中添加了块注释方法,即以“=begin”开头,以“=end”结束。 RGSS遇到换行符就自动结束当前的这一行,这一点是与VB相似的,当然,RGSS也可以象C语言那样以西文分号结束,这点看习惯。 RGSS主程序开始与结束 begin 程序段 end RGSS库的开始与结束 module 库名 程序段 end RGSS类的开始与结束 class 类名 < [父类] 程序段 end RGSS自定义函数的开始与结束 def 函数名[(参数)] 程序段 end RGSS库的调用 include 库名 RGSS类的调用 类名.new[(类中initialize函数的参数)] RGSS自定义函数的调用 函数名[(参数)] RGSS中的条件分歧 1.if语句 示例: if $a == "66rpg" print("欢迎来到#{$a}") end 2.if...else语句 示例: if $username == "admin" and $password == "abc" print("你好,Admin") else print("您无权察看!!") exit end 3,if...elsif...else语句 示例: if $name == "Tony" and $lastname == "Fox" print("Welcome, Tony Fox!") elsif $name == "Iceandsnow" and $lastname == "Fox" print("Welcome, Iceandsnow Fox!") else print("Unable Name") end 4.case语句 case 变量 when 值 语句块 when 值 语句块 else 语句块 end RGSS中的循环 while ~ end在满足特定条件期间进行循环的情况下使用 while 语句。 a = 0 # 为变量 a 赋值代入 0。 i = 1 # 为变量 i 赋值代入 1。 while i <= 5 # 当变量 i 为 5 以下时循环开始(重复以下处理), a += i # 变量 a 加上 i 的值。 i += 1 # 变量 i 的值增加 1。 end # 循环结束。 p a # 显示计算结果。 这个示例是求从 1 到 5 这五个数字总和的程序。在这里,变量 i 是用来产生从 1 到 5 这五个数字用的。当然变量名也可以不用 i,一般情况下循环处理用的变量会使用 i、j、k 为名称。 那么,这个程序最重要的是 i += 1 这行。如果没有这行 i 的值永远为 1,而 i <= 5 的条件也会一直满足,就会成为无限循环。因此,这里每次都向 i 加上 1 使得 i 的值依次变为 2、3、4、5、6 从而使得循环结束。 变量 a 和 i 的数值变化,如下表所示。 循环 a 的值 i 的值 初始状态 0 1 1 次后 1 2 2 次后 3 3 3 次后 6 4 4 次后 10 5 5 次后 15 6 循环 5 次后,在 a 的数值里面实际上进行了 1+2+3+4+5 的计算,i 的值也超过了 5 而执行 end 使得循环结束。 然后以 p 命令显示最终 a 的值,就会显示出答案 15。 变化范围 数值的范围,例如类似于「从 1 到 5」这样的概念就称为变化范围。 1..5 上述示例表示「从 1 到 5」的意思。使用 .. 运算符,就能作成一个变化范围。 而且,使用 ... 运算符也可以。 1...5 和 .. 不同的是「不含最后一个数」。所以,这种情况实际上表示的是「从 1 到 4」的意思。 for ~ in ~ end 想在变化范围表示的范围内循环的情况下使用 for 语句。 a = 0 # 为变量 a 赋值代入 0。 for i in 1..5 # 变量 i 的值按从 1 到 5 的范围变化, a += i # 变量 a 加上 i 的值。 end # 循环结束。 p a # 显示计算结果。 这个示例和使用 while 语句的示例完全相同,也是求从 1 到 5 这五个数字总和的程序,但比使用 while 的情况更加简洁。在 while 中变量 i 加上 1 表示的是从 1 到 5 的范围,然而在 for 中是用变量 i 按「从 1 到 5 的范围」的顺序代入来表示。表面看起来不同,但实际上进行的是意思完全相同的处理。 Ruby 中有许多语法,循环中也存在各种各样不同的方法。在不同语法使用中,请按照这个示例提示的「让编写更简便」的方式来思考。实际上,如果理解了条件分歧和循环的话,就能进行大部分逻辑运算了。 loop do ~ end 未指定循环次数和条件的情况下,也就是想进行无限循环时使用 loop 语句。这个与 while 和 for 语句的性质稍微有所不同,一般情况下没有必要注意。 i = 0 # 为变量 i 赋值代入 0。 loop do # 循环开始。 i += 1 # 变量 i 的值增加 1。 p i # 显示变量 i 的值。 end # 循环结束。 这个示例是「一边把 i 的值加上 1,一边显示 i 的值」的程序,没有结束条件。一旦运行的话就会连续显示 1、2、3……。如果这种对话框不断显示的话,就算要结束程序也是不可能的,只能按着 F12 键不放强行关闭对话框,并点击右上方的结束按钮关闭程序。 break 想中途中断循环就要使用 break 命令。 i = 0 # 为变量 i 赋值代入 0。 loop do # 循环开始。 i += 1 # 变量 i 的值增加 1。 if i == 5 # 如果变量 i 的值为 5 的话, break # 中断循环。 end # 条件分歧结束。 p i # 显示变量 i 的值。 end # 循环结束。 上述示例在程序中加上了「i 等于 5 的就中断循环」的条件。运行该程序,显示 1、2、3、4 就结束了。 break 即使在 while 和 for 等其它方法作成的循环中也能使用。 next 在不中断循环的情况下,跳过本次循环而进入下一次循环时使用 next 命令。 for i in 1..5 # 变量 i 的值按从 1 到 5 的范围变化, if i == 3 # 如果变量 i 的值为 3 的话, next # 进入下一次循环。 end # 条件分歧结束。 p i # 显示变量 i 的值。 end # 循环结束。 运行这个示例,会显示 1、2、4、5。 程序示例1,helloworld程序 begin print("HelloWorld!!") end 2,数值运算 begin x = 10 y = 20 p x+y end 3,条件判断 begin a = 10 if a>=5 print("a的值大于等于5") else print("a的值小于等于5") end end 4,循环 begin for i in 1..3 print("这是第#次显示") end end begin do print("这是第#次显示") while i <= 4 end begin loop do i++ print("这是第#次显示") if i = 4 break end end end 5,函数调用 class My_Class def mian # 主处理 x = 6 y = 5 addnum(x, y) end def addnum(num1, num2) sum = num1 + num2 p sum end end 6,类的调用 begin if $scene != nil $scene.main else exit end $scene = Scene_MyClass.new end 7,库的生成及调用 module MYMODULE def division(num1, num2) sum = num1/num2 return sum end end class My_Class include MYMODULE def main x = 25 y = 16 z = division(x, y) p z end RGSS默认脚本结构Ruby Game Script System │ ├─Game_Actors 处理角色排列的类。 ├─Game_BattleAction 处理行动 (战斗中的行动) 的类。 ├─Game_Battler 处理战斗者的类。 │ ├─Game_Actor 处理角色的类。 │ └─Game_Enemy 处理敌人的类。 ├─Game_Character 处理角色的类。 │ ├─Game_Event 处理事件的类。 │ └─Game_Player 处理主角的类。 ├─Game_CommonEvent 处理公共事件的类。 ├─Game_Map 处理地图的类。 ├─Game_Party 处理同伴的类。 ├─Game_Screen 处理屏幕的类。 │ └─Game_Picture 处理图片的类。 ├─Game_SelfSwitches 处理独立开关的类。 ├─Game_Switches 处理开关的类。 ├─Game_System 处理系统附属数据的类。 ├─Game_Temp 处理在没有存档的情况下的临时数据的类。 ├─Game_Troop 处理队伍的类。 ├─Game_Variables 处理变量的类。 ├─Interpreter 执行事件命令的解释器中的命令的类。 ├─Scene_Battle 处理战斗画面的类。 ├─Scene_Debug 处理调试画面的类。 ├─Scene_End 处理游戏结束画面的类。 ├─Scene_Equip 处理装备画面的类。 ├─Scene_File 处理游戏读取、存档画面的基类。 │ ├─Scene_Save 处理存档画面的类。 │ └─Scene_Load 处理读取画面的类。 ├─Scene_Gameover 处理游戏结束画面的类。 ├─Scene_Item 处理物品画面的类。 ├─Scene_Map 处理地图画面的类。 ├─Scene_Menu 处理菜单画面的类。 ├─Scene_Name 处理名称输入画面的类。 ├─Scene_Shop 处理商店画面的类。 ├─Scene_Skill 处理技能画面的类。 ├─Scene_Status 处理状态画面的类。 ├─Scene_Title 处理标题画面的类。 ├─Spriteset_Battle 处理战斗的精灵的类。 ├─Spriteset_Map 处理地图的精灵的类。 ├─Bitmap(RGSS) 位图的类。 ├─Color(RGSS) 颜色的类。 ├─Font(RGSS) 字体的类。 ├─Plane(RGSS) 平面的类。 ├─Rect(RGSS) 矩形的类。 ├─RGSSError(RGSS) 处理 RGSS 内部异常的类。 ├─RPG(Module) 集合了 RPGXP 数据结构等的模块。 │ ├─RPG::Cache(Module) 读取 RPGXP 的各种图片,建立并存储 Bitmap 对象的模块。 │ ├─RPG::Sprite(RGSS) 追加了 RPGXP 使用的各种效果处理的精灵的类。 │ │ └─Sprite_Character 角色显示用精灵。 │ │ └─Sprite_Battler 战斗显示用精灵。 │ ├─RPG::Weather(RGSS) 用 RPGXP 事件指令显示天气效果(雨,风,雪)的类。 │ ├─RPG::Map(Data) 地图的数据类。 │ ├─RPG::MapInfo(Data) 地图信息的数据类。 │ ├─RPG::Event(Data) 地图事件的数据类。 │ │ └─RPG::Event::Page(Data) 事件页的数据类。 │ │ ├─RPG::Event::Page::Condition(Data) 事件页“条件”的数据类。 │ │ └─RPG::Event::Page::Graphic(Data) 事件页“图像”的数据类。 │ ├─RPG::EventCommand(Data) 事件指令的数据类。 │ ├─RPG::MoveRoute(Data) 移动路线的数据类。 │ ├─RPG::MoveCommand(Data) 移动命令的数据类。 │ ├─RPG::Actor(Data) 角色的数据类。 │ ├─RPG::Class(Data) 职业的数据类。 │ │ └─RPG::Class::Learning(Data) 职业“学会的特技”的数据类。 │ ├─RPG::Skill(Data) 技能的数据类。 │ ├─RPG::Item(Data) 物品的数据类。 │ ├─RPG::Weapon(Data) 武器的数据类。 │ ├─RPG::Armor(Data) 防具的数据类。 │ ├─RPG::Enemy(Data) 敌人的数据类。 │ │ └─RPG::Enemy::Action(Data) 敌人“行为”的数据类。 │ ├─RPG::Troop(Data) 队伍的数据类。 │ │ ├─RPG::Troop::Member(Data) 队伍成员的数据类。 │ │ └─RPG::Troop::Page(Data) 战斗事件页的数据类。 │ │ └─RPG::Troop::Page::Condition(Data) 战斗事件页“条件”的数据类。 │ ├─RPG::State(Data) 状态的数据类。 │ ├─RPG::Animation(Data) 动画的数据类。 │ │ ├─RPG::Animation::Frame(Data) 动画“帧”的数据类。 │ │ └─RPG::Animation::Timing(Data) 动画“SE 与闪烁的时机”的数据类。 │ ├─RPG::Tileset(Data) 图块的数据类。 │ ├─RPG::CommonEvent(Data) 公共事件的数据类。 │ ├─RPG::System(Data) 系统的数据类。 │ │ └─RPG::System::Words(Data) 系统“用语”的数据类。 │ ├─RPG::AudioFile(Data) 声音文件的数据类。 ├─Sprite(RGSS) 精灵的类。 │ ├─Sprite_Picture 显示图片用的精灵。 │ ├─Sprite_Timer 显示计时器用的精灵。 │ └─Arrow_Base 在战斗画面使用的箭头光标的精灵。 │ ├─Arrow_Enemy 选择敌人的箭头光标。 │ └─Arrow_Actor 选择角色的箭头光标。 ├─Table(RGSS) 多维数组的类。 ├─Tilemap(RGSS) 管理元件地图的类。 ├─Tone(RGSS) 色调的类。 ├─Viewport(RGSS) 视口的类。 └─Window(RGSS) 游戏内窗口的类。 └─Window_Base 游戏中全部窗口的基类。 ├─Window_Selectable 拥有光标的移动以及滚动功能的窗口类。 │ ├─Window_Command 一般的命令选择行窗口。 │ ├─Window_MenuStatus 显示菜单画面和同伴状态的窗口。 │ ├─Window_Item 物品画面、战斗画面、显示浏览物品的窗口。 │ ├─Window_Skill 特技画面、战斗画面、显示可以使用的特技浏览的窗口。 │ ├─Window_Target 物品画面与特技画面的、使用对像角色选择窗口。 │ ├─Window_EquipRight 装备画面、显示角色现在装备的物品的窗口。 │ ├─Window_EquipItem 装备画面、显示浏览变更装备的候补物品的窗口。 │ ├─Window_ShopCommand 商店画面、选择要做的事的窗口 │ ├─Window_ShopBuy 商店画面、浏览显示可以购买的商品的窗口。 │ ├─Window_ShopSell 商店画面、浏览显示可以卖掉的商品的窗口。 │ ├─Window_Message 显示文章的信息窗口。 │ ├─Window_PartyCommand 战斗画面、选择战斗与逃跑的窗口。 │ ├─Window_DebugLeft 调试画面、指定开关及变量块的窗口。 │ └─Window_DebugRight 调试画面、个别显示开关及变量的窗口。 ├─Window_Help 特技及物品的说明、角色的状态显示的窗口。 ├─Window_Gold 显示金钱的窗口。 ├─Window_PlayTime 菜单画面显示游戏时间的窗口。 ├─Window_Steps 菜单画面显示步数的窗口。 ├─Window_SkillStatus 显示特技画面、特技使用者的窗口。 ├─Window_EquipLeft 装备画面的、显示角色能力值变化的窗口。 ├─Window_Status 显示状态画面、完全规格的状态窗口。 ├─Window_SaveFile 显示存档以及读档画面、保存文件的窗口。 ├─Window_ShopNumber 商店画面、输入买卖数量的窗口。 ├─Window_ShopStatus 商店画面、显示物品所持数与角色装备的窗口。 ├─Window_NameEdit 名称输入画面、编辑名称的窗口。 ├─Window_NameInput 输入名称的画面、文字选择窗口。 ├─Window_InputNumber 信息窗口内部使用、输入数值的窗口。 ├─Window_BattleStatus 显示战斗画面同伴状态的窗口。 └─Window_BattleResult 战斗结束时、显示获得的 EXP 及金钱的窗口。 【其中带(RGSS)的类指内部类,带(Data)的类指RMXP的数据类】 |
随便看 |
|
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。