设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2267|回复: 6
打印 上一主题 下一主题

[已经解决] 怎么实现:“脚本条件分歧:当开关1为ON时”

[复制链接]

Lv2.观梦者

梦石
0
星屑
675
在线时间
579 小时
注册时间
2010-2-15
帖子
1367
跳转到指定楼层
1
发表于 2012-2-12 20:04:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RT,我只知道if-end,if的条件“当开关1为ON时怎么写啊?”

点评

一个主题里面最好只放一个问题……第2个问题请再开一贴,不然,不好发卡啊  发表于 2012-2-25 16:44

Lv1.梦旅人

梦石
0
星屑
105
在线时间
5250 小时
注册时间
2011-10-7
帖子
1885

开拓者贵宾

2
发表于 2012-2-12 20:08:34 | 只看该作者
本帖最后由 凌童鞋 于 2012-2-12 20:09 编辑

if $game_switches[1] == true
……
end

点评

全写有助于新手理解……  发表于 2012-2-25 18:12
可以简写为: if $game_switches[1] ……………… end  发表于 2012-2-25 16:43
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
675
在线时间
579 小时
注册时间
2010-2-15
帖子
1367
3
 楼主| 发表于 2012-2-12 20:25:47 | 只看该作者
凌童鞋 发表于 2012-2-12 20:08
if $game_switches[1] == true
……
end
  1.     if $game_switches[1] == false
  2.       Input.update                  # 更新输入讯息
  3.     end
复制代码
再请教一下:我为了用全键盘脚本做了个这个,把“Input.update”用这个if句括起来了,但当我一号开关打开的时候还是执行了。为什么捏?
而且好像用 $game_switches[1] == true 打不开一号开关……

点评

直接把scene_base的update东西复制进来,把super去掉。  发表于 2012-2-12 20:40
还是不行啊  发表于 2012-2-12 20:30
哦,换成=试试……  发表于 2012-2-12 20:27
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
105
在线时间
5250 小时
注册时间
2011-10-7
帖子
1885

开拓者贵宾

4
发表于 2012-2-12 20:32:51 | 只看该作者

RE: 怎么实现:“脚本条件分歧:当开关1为ON时”

315038639 发表于 2012-2-12 20:25
再请教一下:我为了用全键盘脚本做了个这个,把“Input.update”用这个if句括起来了,但当我一号开关打开 ...

你要是scene类在update里super了的话当然不行,因为scene_base的update中是更新这个的。
另外
赋值用=
判断用==
所以你当然没打开……

点评

那要怎么才能暂时屏蔽Input.update呢……?  发表于 2012-2-12 20:36
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1449
在线时间
1592 小时
注册时间
2010-11-6
帖子
3193

贵宾

5
发表于 2012-2-15 21:24:25 | 只看该作者
  1. $game_switches[编号] = true / false
  2. true是打开,false是关闭
复制代码
就是这个
走你耶。
回复

使用道具 举报

Lv2.观梦者

(?????)

梦石
0
星屑
736
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

6
发表于 2012-2-16 04:44:24 | 只看该作者
本帖最后由 各种压力的猫君 于 2012-2-16 04:56 编辑
Input.update
更新输入信息。原则上是每一画格调用此方法一次。


一般的循环都要就这样写的:
RUBY 代码复制
  1. loop do
  2.   Graphics.update
  3.   Input.update
  4.   do_something
  5. end


不明白你想暂时屏蔽它干什么。但是想要暂时屏蔽的话就直接在脚本编辑器里改:
(Ctrl+Shift+F 默认工程可以找到四处I nput.update 。下面以 Scene_Base 中的为例)
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Scene_Base
  3. #------------------------------------------------------------------------------
  4. #  游戏中全部画面的超级类。
  5. #==============================================================================
  6.  
  7. class Scene_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 主处理
  10.   #--------------------------------------------------------------------------
  11.   def main
  12.     start                         # 开始处理
  13.     perform_transition            # 执行渐变
  14.     post_start                    # 开始后处理
  15.     Input.update                  # 更新输入讯息
  16.     loop do
  17.       Graphics.update             # 更新游戏画面
  18.       Input.update                # 更新输入讯息
  19.       update                      # 更新画面
  20.       break if $scene != self     # 切换画面时中断循环
  21.     end
  22.     Graphics.update
  23.     pre_terminate                 # 结束前处理
  24.     Graphics.freeze               # 准备渐变
  25.     terminate                     # 结束处理
  26.   end
18行改成:
RUBY 代码复制
  1. 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插件脚本”下面插入以下脚本:
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Input 输入模块
  3. #------------------------------------------------------------------------------
  4. #  处理遥控器/游戏杆或键盘输入信息的模块。
  5. #==============================================================================
  6. # 实际上 Input 是一个模块,
  7. # 本应使用 module Input 这种写法。
  8. # 但是这里需要对 Input 模块的原有方法进行重命名,
  9. # 而模块不支持重命名,遂只能采用匿名类间接实现。
  10. # 不能一下理解也无所谓,一般的脚本用不上匿名类。
  11. class << Input
  12.   #--------------------------------------------------------------------------
  13.   # ● 更新
  14.   #--------------------------------------------------------------------------
  15.   # 将原来的 update 方法重命名为 _66rpg_update
  16.   # 有关方法的命名规则请参阅帮助文档
  17.   alias _66rpg_update update
  18.   # 重定义 update 方法
  19.   # 因为上面已经用alias设置重名,不会影响到原有内容。
  20.   def update
  21.     # _66rpg_update 表示调用原 update
  22.     _66rpg_update unless $game_switches[66]
  23.   end # <- def update
  24. end # <- module Input

这样当66号开关打开之后,所有的Input.update都会失效。
(别用F9打开开关测试,那个不顶用的。你需要建一个NPC测试。)���

评分

参与人数 1梦石 +2 收起 理由
iisnow + 2 第2个问题的答案

查看全部评分

回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

7
发表于 2012-2-16 07:04:09 | 只看该作者
条件分歧:脚本:$game_switches[1]

是指这个意思么?
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-27 13:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表