设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
Project1 查看内容

RGSS脚本研究报告(Game系1)

2006-1-7 00:00| 发布者: 柳柳| 查看: 4339| 评论: 0|原作者: bbschat

摘要:    作者 bbschat 版本与更新  2005年12月 相关网址 点此进入讨论贴 范例工程    教程内容 Game_Temp : 用途:保存游戏中产生的临时数据。实例:$game_temp 游戏开始前产生
  

作者

bbschat

版本与更新

 2005年12月

相关网址

点此进入讨论贴

范例工程

 



 教程内容

Game_Temp :

用途:保存游戏中产生的临时数据。

实例:$game_temp 游戏开始前产生的唯一一个实例。

属性:很多,需要的时候看定义后面的注释。

方法:无

心得:就是个数据仓库,游戏中需要用到的一些无法归类的乱七八糟的数据都可以往这边扔。游戏中呼叫窗口的开关基本都在这里面。多个对象之间如果要传递数据也可以通过$game_temp这个全局实例。

修改:如果要增加新的全局变量,可以在Game_Temp里面追加设定一个新的属性。


Game_System :

用途:同样用来保存游戏中产生的临时数据,但也提供一些额外的方法,额外的方法主要用来操作游戏音效,还包括计时器的更新。

实例:$game_system 游戏开始前产生的唯一一个实例。

属性:
一开始两个只读(attr_reader)属性map_interpreter和battle_interpreter分别是地图事件和战斗事件的命令解释器(Interpreter)实例。因为两种事件使用同一个命令解释器,所以参数分别用true(地图)和false(战斗)做区别。这两个属性的常用属性是running?,表示解释器是否正在运行。

timer:存储计时器当前变量

接下来6个属性都是在事件中设定的,没什么难理解的。

save_count:存档次数,一开始为零,存档时累加。在事件中可以将当前存档次数赋给一个公共变量。

magic_number:魔法编号,魔法数字,产生方法不明,游戏工程编辑后再存盘这个数字就会改变,用来判断是否需要重载地图和角色。

windowskin_name:窗口外观的文件名,虽然定义在方法里面,本质还是一个属性。其实开始直接 attr_accessor :windowskin_name ,再在initialize里面定义@windowskin_name = $data_system.windowskin_name 就好了。

battle_bgm和battle_end_me:战斗 BGM和战斗结束的 ME,也定义在方法里面,本质还是属性。

方法:音效(bgm\bgs\me\se)的演奏、停止、记忆、还原、淡出没什么好说的。Graphics.frame_reset可以帮助避免因播放较大文件音效时的失帧现象。
update 方法用来做计时器的更新。

心得:不伦不类的一个对象,感觉象是软件开发人员后期突然想起一个功能就随手扔进了Game_System里面。

修改:游戏中的计时器是根据图像帧的刷新而刷新的,如果不满意就修改这里吧,其他想不出什么可修改的。


Game_Switches :

用途:用数组形式保存游戏中的公共开关的值、数量上限定义为5000、未定义的开关默认值为false。

实例:$game_switches 游戏开始前产生的唯一一个实例。

属性、方法省略

心得:调用方法 $game_switches[公共变量的ID],在事件里面公共开关设定一旦启动,地图就会刷新。

修改:除了开关数量的上限,该对象本身没什么好修改的,但可以在脚本其它地方使用 $game_switches[公共变量的ID] 来做某些开关。但不提倡这种做法,这样做虽然设定事件的时候略微省事一点,但可能会和其他游戏中定义的开关发生冲突。在Game_Temp里面追加一个新的全局变量做开关能达到同样的效果。


Game_Variables :

用途:与Game_Switches类似,用数组形式保存游戏中的公共变量的值、数量上限同样定义为5000、未定义的变量默认值为0。

实例:$game_variables 游戏开始前产生的唯一一个实例。

属性、方法省略

心得:调用方法 $game_variables[公共变量的ID],在事件里面公共变量设定一旦启动,地图就会刷新。

修改:游戏中设定变量的最大值为 99999999,最小值为-99999999,不满意的话在Interpreter 4里面可以修改,其它同Game_Switches。




说实话,虽然本人也是从研究RM开始了解RUBY,并接触面向对象的语言。但看了RGSS的脚本后感觉代码写的很差,完全没有领悟面向对象的精髓,今天看到一篇RMXP SDK(震撼登场)的贴子,很多人不明白这是干什么用的。其实很简单,原来的脚本太烂了,用起来很不方便,所以要将其修改成符合面向对象精神的规范的代码,所以有了SDK。

SDK本身并不会实现什么特殊功能,但有了SDK以后在RMXP上用脚本增加功能将更方便,更不会发生冲突。(当然,前提是你懂得正确使用RGSS语言)




RGSS脚本研究报告是自己一边研究RGSS脚本一边整理的类似于笔记又类似于说明的东西,本文并不适合没接触过程序或对面向对象完全没有概念的人。如果觉得这些东西对你有帮助我很高兴,请多给我点鼓励让我继续写下去。但请不要任意转载,本人保留本文及其系列的所有版权。


 

教程的通用说明

本站发布的教程,大多经过一些测试,应该都能够实现相应功能。但不保证所有的教程都是最优化的制作方法。

相关问题,点击发布贴进行讨论。谢谢您的鼓励与支持。


鲜花
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-21 19:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部