Project1
标题: 怎么实现:“脚本条件分歧:当开关1为ON时” [打印本页]
作者: 315038639 时间: 2012-2-12 20:04
标题: 怎么实现:“脚本条件分歧:当开关1为ON时”
RT,我只知道if-end,if的条件“当开关1为ON时怎么写啊?” dsu_plus_rewardpost_czw
作者: 凌童鞋 时间: 2012-2-12 20:08
本帖最后由 凌童鞋 于 2012-2-12 20:09 编辑
if $game_switches[1] == true
……
end
作者: 315038639 时间: 2012-2-12 20:25
凌童鞋 发表于 2012-2-12 20:08
if $game_switches[1] == true
……
end
- if $game_switches[1] == false
- Input.update # 更新输入讯息
- end
复制代码 再请教一下:我为了用全键盘脚本做了个这个,把“Input.update”用这个if句括起来了,但当我一号开关打开的时候还是执行了。为什么捏?
而且好像用 $game_switches[1] == true 打不开一号开关……
作者: 凌童鞋 时间: 2012-2-12 20:32
标题: RE: 怎么实现:“脚本条件分歧:当开关1为ON时”
315038639 发表于 2012-2-12 20:25
再请教一下:我为了用全键盘脚本做了个这个,把“Input.update”用这个if句括起来了,但当我一号开关打开 ...
你要是scene类在update里super了的话当然不行,因为scene_base的update中是更新这个的。
另外
赋值用=
判断用==
所以你当然没打开……
作者: yychchhh 时间: 2012-2-15 21:24
- $game_switches[编号] = true / false
- true是打开,false是关闭
复制代码 就是这个
作者: 各种压力的猫君 时间: 2012-2-16 04:44
本帖最后由 各种压力的猫君 于 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测试。)���
作者: 亿万星辰 时间: 2012-2-16 07:04
条件分歧:脚本:$game_switches[1]
是指这个意思么?
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |