Project1
标题: 想在标题里增加一栏“帮助”,打开后显示图片 [打印本页]
作者: 王小錵 时间: 2016-7-16 15:23
标题: 想在标题里增加一栏“帮助”,打开后显示图片
本人新手,脚本基本不会
之前在视频“脚本不是高手的专利”里依葫芦画瓢的改了一下Scene_Title里的脚本(如下图)
测试游戏,打开“帮助”栏会显示错误(如下图)
如果把
# 释放命令窗口
@command_window.dispose
# 释放标题图形
@sprite.bitmap.dispose
@sprite.dispose
这几行删掉,测试时打开“帮助”栏,不会提示错误,只会有音效,也不会产生其他任何效果
请问windows_base里的脚本该怎么修改?或者是有其他的解决办法吗?
看到有设置成 进入游戏之后使用事件 的,但是不知道怎么设置之后是黑屏,设置的事件也都没有发生(禁止呼出菜单、显示图片),应该是Scene_Title的脚本写错了……
已经困扰两天了,求详解
作者: RyanBern 时间: 2016-7-16 16:04
本帖最后由 RyanBern 于 2016-7-16 17:17 编辑
@about 防论坛解析错误
首先,千万不要加这几句
# 释放命令窗口
@command_window.dispose
# 释放标题图形
@sprite.bitmap.dispose
@sprite.dispose
# 释放命令窗口
@command_window.dispose
# 释放标题图形
@sprite.bitmap.dispose
@sprite.dispose
因为这几句的含义是释放命令窗口和标题,这些对象没有用完是千万不能释放的,并且你在update里面也对命令窗口进行刷新操作。一个窗口如果被释放后是不能刷新的。
正确的做法是改Scene_Title的三个地方,第一个就是update方法
def update
# Update command window
@command_window.update
if @command_window.active
update_command
return
end
if @about
update_about
return
end
end
def update
# Update command window
@command_window.update
if @command_window.active
update_command
return
end
if @about
update_about
return
end
end
这里的update需要判断刷新的内容,然后分别执行刷新的操作。
第二个地方就是要新加入这个方法:
def update_command
# If C button was pressed
if Input.trigger?(Input::C)
# Branch by command window cursor position
case @command_window.index
when 0 # New game
command_new_game
when 1 # Continue
command_continue
when 2 # Shutdown
command_shutdown
end
end
end
def update_command
# If C button was pressed
if Input.trigger?(Input::C)
# Branch by command window cursor position
case @command_window.index
when 0 # New game
command_new_game
when 1 # Continue
command_continue
when 2 # Shutdown
command_shutdown
end
end
end
这个方法的作用其实是将原来的update拆开,这样方便代码的管理。在这里你需要把调用command_about的命令加在合适的位置上。
最后一个地方是你的command_about和新加入的update_about。首先你原来的方式有问题在于你生成完标题图形后马上就执行了if Input.trigger?,这样的效果就是你生成的图片在一瞬间被释放了,因此你就看不到效果而只能听见音效。正确的做法是将command_about写成这样:
def command_about
$game_system.se_play($data_system.decision_se)
@title_about = Sprite.new
@title_about.bitmap = RPG::Cache.title("001about")
# 请注意这两句,这是用来控制update方法该刷新哪个对象
@command_window.active = false
@command_window.visible = false
@about = true
end
def command_about
$game_system.se_play($data_system.decision_se)
@title_about = Sprite.new
@title_about.bitmap = RPG::Cache.title("001about")
# 请注意这两句,这是用来控制update方法该刷新哪个对象
@command_window.active = false
@command_window.visible = false
@about = true
end
然后追加update_about定义:
def update_about
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@title_about.bitmap.dispose
@title_about.dispose
# 同样注意这两句的控制
@command_window.active = true
@command_window.visible = true
@about = false
return
end
end
def update_about
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@title_about.bitmap.dispose
@title_about.dispose
# 同样注意这两句的控制
@command_window.active = true
@command_window.visible = true
@about = false
return
end
end
以上代码都是在Scene_Title内部进行操作,未测试。有问题请回帖说明。
作者: 英顺的马甲 时间: 2016-7-16 16:10
- def command_about
- $game_system.se_play($data_system.decision_se)
- about_sprite = Sprite.new
- about_sprite.bitmap = RPG::Cache.title('001about')
- Graphics.update while !Input.trigger(Input::C)
- $game_system.se_play($data_system.decision_se)
- about_sprite.bitmap
- about_sprite.dispose
- end
复制代码
别在你的说明指令里把所有东西都释放啊
作者: 王小錵 时间: 2016-7-16 16:28
要疯了……我不会啊……本来还能显示图片,但是标题栏和图片在一块重叠着我就想着把东西都释放掉……
现在是
这么个情况……
作者: 王小錵 时间: 2016-7-16 16:46
(求解救)
我试着弄了一下,现在是这样的……
请再看一下我脚本的问题
作者: RyanBern 时间: 2016-7-16 16:55
出现了什么问题?是效果没出来还是?
作者: 王小錵 时间: 2016-7-16 17:07
就是想要这种效果:帮助图片显示的时候暂时让标题框消失
现在还没做帮助的图片,但是里面肯定是有不少字的……标题框碍事
作者: 王小錵 时间: 2016-7-16 17:27
解决了!谢谢大神~
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |