一、关于对RGSS学习的态度.
有些人认为RGSS是高手的事情,我们这些小菜,没有RGSS又不会死。
在以前天狼星的贴子上,他说的是:我们暂且认为RGSS是高手的事情。我认为这种观点是对的,但是一个好的游戏的作者,是不得不认识RGSS的,不是么?如果你做出来一个游戏,结果人家一开起来结果显示“新游戏”“继续”“退出”的话,那人家会认为,这绝对不是什么好游戏,可能有些人认为这个观点是错误的:内涵好就可以了,外表不装饰又不是没有人玩!不过我认为是对的,如果作者不去认识这些简单的东西,是不会制作出一个好的游戏的!
恩,说完了,字也只剩32234个了,打完刚才的这些字,又变成32214个了。
二:新手的脚本入手突破点
Scene_Title
这翻译过来就是场面(画面)标题的意思。
也就是说,这个脚本是应用到标题画面的脚本。
我们在脚本编辑器里打开Title脚本,先不要被假象所迷惑。
看到class Scene_Title这里
我们可以知道,class是一个集体,团体的意思,也就是团体 场面标题,这样看来class后的字就是这个脚本的名称,也就是后来可以调用的脚本名称。
再往下看
if $BTEST
battle_test
return
end
这里,注释上说的是战斗的情况下,我们可以知道在battle(争斗、战斗)test(测试)也就是说,战斗测试下,回归并且结束。所以,当我们起用战斗测试的情况下,是不会触发标题画面的。
下面是长长的载入,我们不用知道载入了什么,我们看$data_actors=load_data("Data/Actors.rxdata")
也就是说,系统定义的actors会等于data文件夹中的actors.rxdata。
$game_system = Game_System.new
这句是启动系统,game的系统,那个脚本我们等一下会说到。
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
这句是生成,标题的图形画面。
# 生成命令窗口
s1 = "新游戏"
s2 = "继续"
s3 = "退出"
这里就是我们新人学习的突破点
我们可以看出来s1s2s3所对应的都有一个引号,这个引号代表什么呢?代表你可以随意修改引号中的内容,我们可以尝试把它改成
s1 = "new game"
s2 = "load"
s3 = "exit"
呵呵,打开测试一看,是不是不一样了呢?
@command_window = Window_Command.new(192, [s1, s2, s3])
这句有点怪,没有看出任何注释...太厉害了.
没事,我们照样把它看出来,s1s2s3我们是不是已经见到了呢?
那么我们改
@command_window = Window_Command.new(192, [s2, s1, s3])
好了,测试一看,可以是可以啦,可是....
load变成newgame了,也就是说,内涵没有变,顺序变了.
我们可以改啊,把newgame和load的顺序变一下,照样OK!
@command_window.back_opacity = 160
这句,翻译过来大概是窗口的不透明度=160
自然可以改
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 288
这是X Y坐标,可以随意改动
@command_window.width
这句是指:命令窗口宽度/2
# 判定继续的有效性
# 存档文件一个也不存在的时候也调查
# 有効为 @continue_enabled 为 true、无効为 false
@continue_enabled = false
for i in 0..3
if FileTest.exist?("Save#{i+1}.rxdata")
@continue_enabled = true
end
end
这段是^:判断继续(load)的有效度,有效,则允许读档
if @continue_enabled
@command_window.index = 1
else
@command_window.disable_item(1)
end
无效为灰色.有效进入
# 演奏标题 BGM
$game_system.bgm_play($data_system.title_bgm)
# 停止演奏 ME、BGS
Audio.me_stop
Audio.bgs_stop
呵呵,这里我们总算能够自己写出一段脚本了,来,我们写吧
停止演奏SE Audio.se_stop
停止演奏BGM Audio.bgm_stop
def update
# 刷新命令窗口
@command_window.update
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 命令窗口的光标位置的分支
case @command_window.index
when 0 # 新游戏
command_new_game
when 1 # 继续
command_continue
when 2 # 退出
command_shutdown
end
end
end
这里,WHEN这里,可以看出来
如,WHEN2 退出
下面用了个 command_shutdown
的类
我们继续往下看
def command_shutdown
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# BGM、BGS、ME 的淡入淡出
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# 退出
$scene = nil
end
可以看出,它用def定义了一个名叫command_shutdown的类,在上面引用,类中说,演奏确定SE
BGM BGS ME的淡入淡出,相信这样就可以看出,呵呵,可以自己也照猫画虎地写出来几句吧.
照这样,我们可以做,如:WHEN 3
shitingyinyue
然后在下面这样写
def shitingyinyue
$game_system.se_play($data_system.decision_se)
这样.再加个s4 试听确定音乐
...这个比较无聊哦
不是比较无聊是非常无聊
废话完毕哦
其它的你应该都通过注释知道了吧,不知道啊话_加偶QQ597208259-_-打广告
(怎么废话还不完毕?)
好了,我们看下面.
载入战斗
并且设定BGM,队伍等
OK.
因为比较匆忙,写的不详细,后面的我回来再补上.
恩...懒得写啊... 没办法了,更新吧.
学习Scene_Title的总结语句:
class Scene_Title class后的可称为新一个类的起始,类名
battle_test 战斗测试的情况下
end 末端 结束
return 回归 返回
s1 = "new game" 生成命令窗口时的选项设置
@command_window = Window_Command.new(192, [s1, s2, s3])生成命令窗口的排列设置.
@command_window.back_opacity = 160 窗口的透明度
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 288 窗口的XY坐标以及高度
continue_enabled 继续是否能够
false 否,不能
true 是,可以
$game_system.bgm_play($data_system.title_bgm) 演奏标题bgm
Audio.me_stop 停止演奏audio me
Audio.bgs_stop 停止演奏 audio bgs
if Input.trigger?(Input::C) 按下C的情况下
when 定义case中的索引
case @command_window.index 案件命令窗口索引
command_continue 为下面的def做准备
def command_new_game 定义new game
$game_system.se_play($data_system.decision_se) 演奏确定se
Audio.bgm_stop 停止bgm
$scene = Scene_Map.new 画面等于地图.新的
$game_system.se_play($data_system.buzzer_se) 演奏无效se
$scene = nil 画面为空
$scene = Scene_Battle.new 新的战斗画面