当前位置: 首页 > 文档资料 > RGSS 入门教程 >

19、场景类

优质
小牛编辑
114浏览
2023-12-01

无论地图画面还是菜单画面等等,担任各画面的处理的是场面类。
把所有的场面类列个表,类名和脚本名一一对应。还有,Scene_File 类作为 Scene_Save 和 Scene_Load 的超级类而定义的这个列表没包含。
类 内容
Scene_Title 标题画面
Scene_Map 地图画面
Scene_Menu 菜单画面
Scene_Item 条款画面
Scene_Skill 技能画面
Scene_Equip 装备画面
Scene_Status 状态画面
Scene_Save 储存画面
Scene_Load 载入画面
Scene_End 游戏结束画面
Scene_Battle Battle 战斗画面
Scene_Shop 商店画面
Scene_Name 名字输入画面
Scene_Gameover 游戏结束画面
Scene_Debug 排除故障程序画面
场面类的实例由全局变量$scene保存。这个变量能调出main方法,是继续游戏的构造所在。典型的场面类的骨架如下:
  class Scene_Xxxx
   def main
    Graphics.transition
    loop do
     Graphics.update
     Input.update
     update
     if $scene != self
      break
     end
    end
    Graphics.freeze
   end
   def update
   end
  end
Graphics.freeze 和 Graphics.transition参看Graphics类的详细资料。
if $scene != self 就是如果全局变量 $scene 指向的对象不是自己的话,Input.update 是更新游戏 pad和键盘的输入信息的方法。参照 Input 类的详细资料。
我们曾经在前面提到过,RGSS 的游戏的最基本的事情就是下面的行为:
loop do
Graphics.update
end
场面类的 main 方法是从这里变复杂来的,那么看看是怎样变复杂的吧:
Main 脚本是最后的脚本,以上的脚本基本都是全部类的定义,所以实际上,真正脚本的开始实行是从这里,Main 脚本除去注释 , 仅有成为 11 行。
begin
Graphics.freeze
$scene = Scene_Title.new
while $scene != nil
$scene.main
end
Graphics.transition(20)
rescue Errno::ENOENT
filename = $!.message.sub("No such file or directory - ", "")
print(" 文件夹 #{ filename} 没被发现。")
end
所谓 begin .. rescue ..end 是异常处理的语句。
Graphics.freeze 和 Graphics.transition 刚才也已提出了。
剩下的 4 行,担当标题画面的处理的 Scene_Title 类的实例,生成全局变量 $scene 。