Project1

标题: 请教制作一个快速读档快捷键的思路 [打印本页]

作者: taeckle    时间: 2020-5-6 06:11
标题: 请教制作一个快速读档快捷键的思路
咱想做一个快速读档快捷键,处在游戏的任意画面(比如Scene_Map, Scene_Battle,Scene_Skill画面)时按下这个快速读档快捷键(比如F5)都会自动读取Save0存档
(效果如同默认设置的F12快速返回标题画面),该怎么搞呢?总不能每个Scene_XXX都做一个if Input.trigger?(Input::F5) 巴拉巴拉.. end吧。。。

还请大家指点一二,不胜感激!




作者: chanszeman1018    时间: 2020-5-6 06:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: PLeaseS    时间: 2020-5-6 08:14
直接全键盘插件,然后公共事件里设置分歧
按下按键,执行对应技能的事件
作者: chanszeman1018    时间: 2020-5-6 08:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: RyanBern    时间: 2020-5-6 09:48
本帖最后由 RyanBern 于 2020-5-6 09:51 编辑

你需要在一个在任何情况下都在刷新的模块上插入你的判断。这样的模块至少有两个:Graphics 和 Input。

RUBY 代码复制
  1. module Input
  2.   # 打开单例类(singleton class)
  3.   class << self
  4.     # 使用 alias 重命名模块方法(实际上是重命名了 Input.update)
  5.     alias rb_update_20200506 update
  6.     # 插入新定义
  7.     def update
  8.       rb_update_20200506
  9.       # 比对:Input.trigger(Input::A),由于是在 Input 模块里面,可以简化
  10.       if self.trigger?(A)
  11.         # 执行你需要的操作
  12.         p "A"
  13.       end
  14.     end
  15.   end
  16. end


上面代码我已经添加了注释,思路就是将读档的代码注入到 Input.update 方法里。在这个框架下你自己完成读档的命令吧。
作者: taeckle    时间: 2020-5-7 06:32
RyanBern 发表于 2020-5-6 09:48
你需要在一个在任何情况下都在刷新的模块上插入你的判断。这样的模块至少有两个:Graphics 和 Input。

mod ...

多谢大神指点,我还想问下既然大神你说这样的模块至少有Graphics 和 Input两个,
那模块Graphics又该怎么搞呢?
作者: RyanBern    时间: 2020-5-7 09:38
taeckle 发表于 2020-5-7 06:32
多谢大神指点,我还想问下既然大神你说这样的模块至少有Graphics 和 Input两个,
那模块Graphics又该怎么 ...

RUBY 代码复制
  1. module Graphics
  2.   # 打开单例类(singleton class)
  3.   class << self
  4.     # 使用 alias 重命名模块方法(实际上是重命名了 Graphics.update)
  5.     alias rb_update_20200506 update
  6.     # 插入新定义
  7.     def update
  8.       rb_update_20200506
  9.       # 由于不在 Input 模块里面,必须照抄原来的写法
  10.       if Input.trigger?(Input::A)
  11.         # 执行你需要的操作
  12.         p "A"
  13.       end
  14.     end
  15.   end
  16. end


把 Input 全换成 Graphics,但对按钮的判定必须显式指明是 Input 模块(因为此时不在 Input 模块内部)。
个人建议还是写在 Input 模块中。避免奇奇怪怪的 bug。
作者: taeckle    时间: 2020-5-7 19:10
RyanBern 发表于 2020-5-7 09:38
module Graphics
  # 打开单例类(singleton class)
  class

好的,大神我还有个地方不太明白,那个在def update 下面的 "rb_update_20200506"是必须要写的吗?
如果不写可以吗?咱只想在if Input.trigger?(Input::A) end 里面搞我想出现的快速读档可以吗?
作者: chanszeman1018    时间: 2020-5-7 19:25
提示: 作者被禁止或删除 内容自动屏蔽




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