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 防论坛解析错误
首先,千万不要加这几句
RUBY 代码复制
  1. # 释放命令窗口
  2.     @command_window.dispose
  3.     # 释放标题图形
  4.     @sprite.bitmap.dispose
  5.     @sprite.dispose

因为这几句的含义是释放命令窗口和标题,这些对象没有用完是千万不能释放的,并且你在update里面也对命令窗口进行刷新操作。一个窗口如果被释放后是不能刷新的。

正确的做法是改Scene_Title的三个地方,第一个就是update方法
RUBY 代码复制
  1. def update
  2.     # Update command window
  3.     @command_window.update
  4.     if @command_window.active
  5.       update_command
  6.       return
  7.     end
  8.     if @about
  9.       update_about
  10.       return
  11.     end
  12.   end

这里的update需要判断刷新的内容,然后分别执行刷新的操作。

第二个地方就是要新加入这个方法:
RUBY 代码复制
  1. def update_command
  2.     # If C button was pressed
  3.     if Input.trigger?(Input::C)
  4.       # Branch by command window cursor position
  5.       case @command_window.index
  6.       when 0  # New game
  7.         command_new_game
  8.       when 1  # Continue
  9.         command_continue
  10.       when 2  # Shutdown
  11.         command_shutdown
  12.       end
  13.     end
  14.   end

这个方法的作用其实是将原来的update拆开,这样方便代码的管理。在这里你需要把调用command_about的命令加在合适的位置上。

最后一个地方是你的command_about和新加入的update_about。首先你原来的方式有问题在于你生成完标题图形后马上就执行了if Input.trigger?,这样的效果就是你生成的图片在一瞬间被释放了,因此你就看不到效果而只能听见音效。正确的做法是将command_about写成这样:
RUBY 代码复制
  1. def command_about
  2.   $game_system.se_play($data_system.decision_se)
  3.   @title_about = Sprite.new
  4.   @title_about.bitmap = RPG::Cache.title("001about")
  5.   # 请注意这两句,这是用来控制update方法该刷新哪个对象
  6.   @command_window.active = false
  7.   @command_window.visible = false
  8.   @about = true
  9. end

然后追加update_about定义:
RUBY 代码复制
  1. def update_about
  2.   if Input.trigger?(Input::C)
  3.     $game_system.se_play($data_system.decision_se)
  4.     @title_about.bitmap.dispose
  5.     @title_about.dispose
  6.     # 同样注意这两句的控制
  7.     @command_window.active = true
  8.     @command_window.visible = true
  9.     @about = false
  10.     return
  11.   end
  12. end

以上代码都是在Scene_Title内部进行操作,未测试。有问题请回帖说明。
作者: 英顺的马甲    时间: 2016-7-16 16:10
  1. def command_about
  2.         $game_system.se_play($data_system.decision_se)
  3.         about_sprite = Sprite.new
  4.         about_sprite.bitmap = RPG::Cache.title('001about')
  5.         Graphics.update while !Input.trigger(Input::C)
  6.         $game_system.se_play($data_system.decision_se)
  7.         about_sprite.bitmap
  8.         about_sprite.dispose
  9. end
复制代码

别在你的说明指令里把所有东西都释放啊
作者: 王小錵    时间: 2016-7-16 16:28
英顺的马甲 发表于 2016-7-16 16:10
别在你的说明指令里把所有东西都释放啊

要疯了……我不会啊……本来还能显示图片,但是标题栏和图片在一块重叠着我就想着把东西都释放掉……
现在是

这么个情况……
作者: 王小錵    时间: 2016-7-16 16:46
RyanBern 发表于 2016-7-16 16:04
@about 防论坛解析错误
首先,千万不要加这几句
# 释放命令窗口

(求解救)
我试着弄了一下,现在是这样的……


请再看一下我脚本的问题



作者: RyanBern    时间: 2016-7-16 16:55
王小錵 发表于 2016-7-16 16:46
(求解救)
我试着弄了一下,现在是这样的……

出现了什么问题?是效果没出来还是?
作者: 王小錵    时间: 2016-7-16 17:07
RyanBern 发表于 2016-7-16 16:55
出现了什么问题?是效果没出来还是?

就是想要这种效果:帮助图片显示的时候暂时让标题框消失
现在还没做帮助的图片,但是里面肯定是有不少字的……标题框碍事
作者: 王小錵    时间: 2016-7-16 17:27
RyanBern 发表于 2016-7-16 16:55
出现了什么问题?是效果没出来还是?

解决了!谢谢大神~




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1