赞 | 1 |
VIP | 0 |
好人卡 | 12 |
积分 | 2 |
经验 | 52910 |
最后登录 | 2024-8-20 |
在线时间 | 835 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 196
- 在线时间
- 835 小时
- 注册时间
- 2012-9-16
- 帖子
- 1811
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 yangjunyin2002 于 2014-1-14 13:25 编辑
场景篇 动手改标题(一)
哈罗~我是y君...(我不知道怎么开头了= =)
首先,我们来打开脚本编辑器~
恩,这就是脚本编辑器啦~(版主乱入:尼玛别啰嗦!~)
我们可以看到“▼ 场景”。首先,我们来认识一下scene,其实就是场景的意思。我们可以看到,下面有scene_menu等等的脚本。
那么,场景是什么呢?
就比如菜单吧,他就是一个场景,地图也是一个单独的场景。我们平常都是在地图场景中,而在地图上的行走也由这个“map”场景来处理喽~
我们先看到scene_Title吧~
首先映入眼帘的是这一段脚本:
- #--------------------------------------------------------------------------
- # ● 主处理
- #--------------------------------------------------------------------------
- def main
- if $BTEST # 战斗测试的情况下
- battle_test # 开始战斗测试处理
- else # 普通游戏的情况下
- super # 原来的主处理
- end
- end
复制代码 恩,这一段是什么意思?我们可以对照注释来看。
在脚本中,一般#之后的文字都只是注释用的,和脚本没什么用。一般在编辑器里颜色为绿色~
我们先来认识一下几个简单的RUBY语句吧:众所周知,if是如果的意思。也就是说if是用来判定的,而if后面的就是如果XXX,而else就是否则,如果你这么写:- if Input.trigger?(Input::B)
复制代码 他的意思就是指:如果按下了按钮B(在rm对应中是esc键)
然后接下来就处理了。
话不多说,我们可以看到,这个Title脚本,有这些语句:- def start
- def dispose
- def terminate
复制代码 我们来说说def...的形式吧。
一般,每个场景脚本至少应该都有start、dispose、terminate这样的,他们的意思分别是开始处理、刷新处理、结束处理。- #--------------------------------------------------------------------------
- # ● 开始处理
- #--------------------------------------------------------------------------
- def start
- super
- load_database # 载入数据库
- create_game_objects # 生成游戏对象
- check_continue # 判断继续是否有效
- create_title_graphic # 生成标题画面图像
- create_command_window # 生成指令窗口
- play_title_music # 播放标题画面音乐
- end
复制代码 这是标题画面的def start。既然是开始处理,那么系统处理脚本的时候一定是先读取这儿~
super我们以后再讲,先看到create_command_window,根据右边的注释,意思就是“生成指令窗口”
而我们正好可以看到后面有这么一段:- def create_command_window
- s1 = Vocab::new_game
- s2 = Vocab::continue
- s3 = Vocab::shutdown
- @command_window = Window_Command.new(172, [s1, s2, s3])
- @command_window.x = (544 - @command_window.width) / 2
- @command_window.y = 288
- if @continue_enabled # 继续有效的情况下
- @command_window.index = 1 # 光标位置符合
- else # 无效的情况下
- @command_window.draw_item(1, false) # 指令以半透明显示
- end
- @command_window.openness = 0
- @command_window.open
- end
复制代码 也就是说,既然前面开始处理有生成指令窗口了,而这个就是生成指令窗口的内容。
其中,最重要的就是这一句了:- @command_window = Window_Command.new(172, [s1, s2, s3])
复制代码 @、$等等都是一种变量,一般在这种都用@。
“=”是算是定义的意思,这里,@command_window就调用了command的窗口。这个窗口以后再讲,是经常被调用的选项窗口。
这个指令窗口总得有内容吧,我们可以看到[s1,s2,s3],而在前面就有这么几句:
- s1 = Vocab::new_game
- s2 = Vocab::continue
- s3 = Vocab::shutdown
复制代码 既然知道等号的作用,我们可以这样改写:- @command_window = Window_Command.new(172, [Vocab::new_game, Vocab::continue, Vocab::shutdown])
复制代码 然而,vocab一定代表着什么,不然,怎么会标题出现的选项是“开始游戏”、“继续”、“退出游戏”呢?
我们在数据库里可以设置这个,而在数据库设置就相当于更改了voacb的new_game、continue、shutdown的代表的文字
我们能不能从脚本上改呢?可以!
但是记住一定要加上""双引号。- @command_window = Window_Command.new(172, [“开始”, "继续", "结束"])
复制代码 于是,效果就成了这个样子:
但是我们发现,这个选项框太长了,怎么办呢?
再看到这一句:- @command_window = Window_Command.new(172, [“开始”, "继续", "结束"])
复制代码 括号中的172代表着什么?答案是这个选项指令窗口的宽度!
哈哈,那我们调整到132试试吧!效果大家自己试试。
调整好后,的确,窗口变窄了。
此时,可能有人会问:既然可以改宽度,那么高度在哪里改呢?这里我们先不说(=-=)
我们还是先在 "结束"] 的后面加上看看这个数值代表什么。
然后我们发现了这个奇葩的现象...这样子,似乎窗口就横过来了?
可是,宽度很小。所以,我们把宽度先加大吧~恩,大概242就行了~
这时候,我们发现了,效果十分完美~窗口选项完全横过来了~
而之前的“,3”的3代表着选项数。因为我们有三个选项,所以写3~
可是这样我们的窗口有些偏上,严重影响美观!
肿么破?= -=!!其实很简单,我们往下看,找到这一句:- @command_window.x = (544 - @command_window.width) / 2
- @command_window.y = 288
复制代码 我们已经知道@command_window代表选项窗口。而.x和.y又是什么意思呢?
数学里一般都会有的,x轴和y轴,在RM中是按照像素的。
1像素很小,而我们的游戏窗口默认是544X416像素。
我们可以先把这个窗口的y加大,把288改成348吧?(但是默认窗口一共只有416,如果我们的y轴超过的话就看不到了哦~)
恩,效果不错~自己尝试,这里暂时不放效果图吧...
"喂,Y君,标题画面背景好麻烦还要改文件名肿么破啊= ="在小y滔滔不绝讲脚本的时候,某君问我。
于是,咱就教各位利用脚本解决这个麻烦把。我们先准备一张标题图片,放在Graphics\System中。
在这里,小y用的背景图名字叫“天空.jpg”
RM默认,先用png格式的,jpg格式的也会用。所以建议不要和其他重名了哦~
之前呢,我们在start看到一个生成标题图像,那一定就是背景图啦~所以,找到- def create_title_graphic
- @sprite = Sprite.new
- @sprite.bitmap = Cache.system("Title")
- end
复制代码 bitmap意思似乎就是图片?然后呢,sprite先不讲,是精灵类,就好像我们这个场景类一样,但是精灵类是处理各种动态效果什么的~
我们看到cache.system了吧?system,就是刚才我们放图片的目录!
然后后面是一个(“Title”),就是默认的标题画面的文件名。在这里,改成你自己的放入的标题图片的文件名就好啦~
我在这里改成的是天空。
现在,再来看看效果吧。(不要吐槽背景呵呵= =...=-=我只是=-=||我只是从默认RTP素材的远景图素材里拿的。。。)
另外小y懒得在图上加上标题文字了,大家自己加吧各位= =-----_---------||
呵呵,这效果可比原来的好了很多呢~
恩,到这里我们只是说说对场景类脚本的超超超超级简单小修改!
我们再来说一说结束处理什么的吧~- #--------------------------------------------------------------------------
- # ● 结束处理
- #--------------------------------------------------------------------------
- def terminate
- super
- dispose_command_window
- snapshot_for_background
- dispose_title_graphic
- end
复制代码 结束处理,当然就是我们离开这个场景的时候的处理,就比如我们离开标题(点开始到地图就转换了场景,点继续其实也转换成了存档的场景)就要执行结束处理。
我们可以看到一个dispose的句子,分别是针对command_window和title_graphic,就是结束了背景图和选项窗口。
而背景图和选项窗口其实是在这里结束的。- def dispose_title_graphic
- @sprite.bitmap.dispose
- @sprite.dispose
- end
复制代码 这里就是释放标题画面的背景图。我们也可以将他们合并:
- #--------------------------------------------------------------------------
- # ● 结束处理
- #--------------------------------------------------------------------------
- def terminate
- super
- dispose_command_window
- snapshot_for_background
- @sprite.bitmap.dispose
- @sprite.dispose
- end
复制代码 同理,标题场景里,指令窗口的结束也有这么一句,我们也可以合并。
详细下期我们再说~
那么,改标题(一)就结束啦~然后放上今天的作业和下期预告~~
今天作业是:
1、将标题画面窗口修改成横排
2、将窗口的坐标调到最上方(今天学的是调到了下面)
3、不借助数据库修改标题的选项名
4、不修改文件名来改标题图片(随意图片)
然后呢,欢迎大家交作业,只要效果达成就行,还有糖吃哦~~~60经验!!!!
另外有问题什么的可以在本主题回复或论坛发消息私信我谢谢~~~
下期预告:
1、继续认识场景类脚本的特点
2、动手改标题,增加标题选项
3、写一个作者の话的小场景脚本,可在菜单中调用
4、透明化选项窗口
预告图片:
作者画面图严重偷工减料,完全是随意复制六道陈国里的菜单背景图= =。。。
顺便@一些人:
@576437081 @天地有正气
|
|