本帖最后由 各种压力的猫君 于 2012-2-16 04:56 编辑
Input.update
更新输入信息。原则上是每一画格调用此方法一次。
一般的循环都要就这样写的:loop do Graphics.update Input.update do_something end
loop do
Graphics.update
Input.update
do_something
end
不明白你想暂时屏蔽它干什么。但是想要暂时屏蔽的话就直接在脚本编辑器里改:
(Ctrl+Shift+F 默认工程可以找到四处I nput.update 。下面以 Scene_Base 中的为例)
#============================================================================== # ■ Scene_Base #------------------------------------------------------------------------------ # 游戏中全部画面的超级类。 #============================================================================== class Scene_Base #-------------------------------------------------------------------------- # ● 主处理 #-------------------------------------------------------------------------- def main start # 开始处理 perform_transition # 执行渐变 post_start # 开始后处理 Input.update # 更新输入讯息 loop do Graphics.update # 更新游戏画面 Input.update # 更新输入讯息 update # 更新画面 break if $scene != self # 切换画面时中断循环 end Graphics.update pre_terminate # 结束前处理 Graphics.freeze # 准备渐变 terminate # 结束处理 end
#==============================================================================
# ■ Scene_Base
#------------------------------------------------------------------------------
# 游戏中全部画面的超级类。
#==============================================================================
class Scene_Base
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
start # 开始处理
perform_transition # 执行渐变
post_start # 开始后处理
Input.update # 更新输入讯息
loop do
Graphics.update # 更新游戏画面
Input.update # 更新输入讯息
update # 更新画面
break if $scene != self # 切换画面时中断循环
end
Graphics.update
pre_terminate # 结束前处理
Graphics.freeze # 准备渐变
terminate # 结束处理
end
18行改成:Input.update unless $game_switches[66]
Input.update unless $game_switches[66]
unless就和英文单词的意思一样,表示“除非”——即反向的if判断。
unless $game_switches[66] 完整写法是:unless $game_switches[66]==true (判断语句不写的时候都隐含==true)
于是这句话的意思就是:执行Input模块的update方法(以更新输入),除非第66号开关被打开。
这样当你打开66号开关的时候所有默认的 Scene 都将不再执行 Input.update (因为 Scene_Base 是他们的父类)
或者可以更暴力一点,直接对Input模块的update方法进行重定义。
在“▼ 外来RGSS插件脚本”下面插入以下脚本:#============================================================================== # ■ Input 输入模块 #------------------------------------------------------------------------------ # 处理遥控器/游戏杆或键盘输入信息的模块。 #============================================================================== # 实际上 Input 是一个模块, # 本应使用 module Input 这种写法。 # 但是这里需要对 Input 模块的原有方法进行重命名, # 而模块不支持重命名,遂只能采用匿名类间接实现。 # 不能一下理解也无所谓,一般的脚本用不上匿名类。 class << Input #-------------------------------------------------------------------------- # ● 更新 #-------------------------------------------------------------------------- # 将原来的 update 方法重命名为 _66rpg_update # 有关方法的命名规则请参阅帮助文档 alias _66rpg_update update # 重定义 update 方法 # 因为上面已经用alias设置重名,不会影响到原有内容。 def update # _66rpg_update 表示调用原 update _66rpg_update unless $game_switches[66] end # <- def update end # <- module Input
#==============================================================================
# ■ Input 输入模块
#------------------------------------------------------------------------------
# 处理遥控器/游戏杆或键盘输入信息的模块。
#==============================================================================
# 实际上 Input 是一个模块,
# 本应使用 module Input 这种写法。
# 但是这里需要对 Input 模块的原有方法进行重命名,
# 而模块不支持重命名,遂只能采用匿名类间接实现。
# 不能一下理解也无所谓,一般的脚本用不上匿名类。
class << Input
#--------------------------------------------------------------------------
# ● 更新
#--------------------------------------------------------------------------
# 将原来的 update 方法重命名为 _66rpg_update
# 有关方法的命名规则请参阅帮助文档
alias _66rpg_update update
# 重定义 update 方法
# 因为上面已经用alias设置重名,不会影响到原有内容。
def update
# _66rpg_update 表示调用原 update
_66rpg_update unless $game_switches[66]
end # <- def update
end # <- module Input
这样当66号开关打开之后,所有的Input.update都会失效。
(别用F9打开开关测试,那个不顶用的。你需要建一个NPC测试。)��� |