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

Project1

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

[已经解决] 按键呼出界面的判定问题

[复制链接]

Lv3.寻梦者

梦石
3
星屑
65
在线时间
200 小时
注册时间
2008-7-8
帖子
180
跳转到指定楼层
1
发表于 2015-8-15 15:10:16 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
照着Scene_Map里的call_menu语句写了段按键呼出任务界面的脚本
RUBY 代码复制
  1. class Scene_Map < Scene_Base
  2.   alias x20150815_update_scene update_scene
  3.   def update_scene
  4.     x20150815_update_scene
  5.     update_call_task unless scene_changing?
  6.   end
  7.  
  8.  
  9.   def update_call_task
  10.     if $game_system.menu_disabled || $game_map.interpreter.running?
  11.       @task_calling = false
  12.     else
  13.       @task_calling ||= Input.trigger?(:X)
  14.       SceneManager.call(Scene_Tan_Task) if @task_calling && !$game_player.moving?
  15.     end
  16.   end
  17. end

进游戏发现按下A可以进入界面,但Esc退出来瞬间又会进入该界面,百思不得其解。
然后发现@task_calling ||= Input.trigger?(:X)这句里的||=看不太懂,去百度了下发现"a ||= b"的展开式为: "if a then a else a = b end"
还是看不懂...
但是感觉直接写成@task_calling = Input.trigger?(:X)好像还挺说得通的,就去掉了||,进游戏发现还真的就没问题了。。。

可问题是我这个写法是直接抄call_menu语句里的啊,为什么它用 ||= 就没事,我就一定要用=才会没问题?
@task_calling ||= Input.trigger?(:X)这句话到底执行的是什么内容?

Lv3.寻梦者

梦石
3
星屑
65
在线时间
200 小时
注册时间
2008-7-8
帖子
180
3
 楼主| 发表于 2015-8-15 15:27:22 | 只看该作者
taroxd 发表于 2015-8-15 15:21
@menu_calling ||= Input.trigger?(:B)
是指如果原来 @menu_calling 不为真,而且按下了B键,就将 @menu_ca ...

这么看来好像效果跟@task_calling = Input.trigger?(:X)并没有什么区别吧?
为什么要这么写呢

点评

防止本来为 true,然后未按键使得变为 false。这么做使得在移动中按下 B 键也可以等到停止后再呼出菜单  发表于 2015-8-15 15:33
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2015-8-15 15:21:37 | 只看该作者
@menu_calling ||= Input.trigger?(:B)
是指如果原来 @menu_calling 不为真,而且按下了B键,就将 @menu_calling 设为真。如果原来就是真,那么不做改动。

默认脚本没问题是因为在进入场景(Scene_Map#start)的时候就把 @menu_calling 设为 false 了。也就是说,从菜单返回地图后 @menu_calling 是 false。

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 16:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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