马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这篇文章会讲下如何在在游戏中禁止用户和界面交互,以及暂时禁止快捷键的办法。
在有些时候变换不希望被用户打断,或者变幻在界面上面演出,不希望用户再按界面的按钮。在这些情况下,需要让用户暂时不能和界面交互。
在论坛搜索之后发现了这个帖子:
https://lemmasoft.renai.us/forums/viewtopic.php?t=32309
下面是一个实例的代码。
不希望打断的转场,放在eyecatch这个屏幕里面,然后设定转场是10s。
[RenPy] 纯文本查看 复制代码 init python:
import pygame
label eyecatch():
## pygame这个是为了在转场的时候,用户不能和按钮交互
$ pygame.event.set_allowed(None)
$ pygame.event.set_allowed(pygame.USEREVENT)
scene bg
show screen eyecatch
## 动态效果总演示事件为10s
pause 10
$ pygame.event.set_blocked(None)
jump execuation
return
除此之外,有些快捷键我们也想在一些界面禁止。比如快进(skip),隐藏界面,esc键呼出主菜单等。
关于定制按键映射可以看文档的这里:
https://www.renpy.cn/doc/keymap.html
我的实现例子
[RenPy] 纯文本查看 复制代码
## 快捷键禁用
# 鼠标右键、esc:会唤出系统菜单
# 鼠标中键:隐藏ui
# ctrl:快进
label disable_shortcut():
python:
## 禁止显示游戏菜单
_game_menu_screen = None
## 禁止快进
config.allow_skipping = False
## 禁止隐藏界面
_windows_hidden = True
return
## 快捷键恢复
label enable_shortcut():
python:
_game_menu_screen = 'save'
config.allow_skipping = True
_windows_hidden = False
return
## 使用禁止的例子
label setup():
call disable_shortcut
jump target
return
## 使用激活的例子
label end():
call enable_shortcut
jump start
_game_menu_screen 是按esc键会出现的界面,默认是存档界面,这个也可以自己写个界面替换。
是否可以快进这个变量,可以在存储区配置项的文档中找到,里面还有很多别的有用的配置项,比如是否可以回滚。
https://www.renpy.cn/doc/store_variables.html#var-_autosave
最后是_windows_hidden 这个变量,是一个文档里都没有提到,搜索都搜不到的变量。最近在接一个游戏制作的外包,对方制作人要求在一个界面禁用隐藏界面。因为游戏本来就是界面交互,要是玩家不小心按到了,结果界面没有怎么办。尝试通过修改按键映射,以及在界面赋予按键新的功能来解决,但是都不行。对方制作人提出可以用这个变量,他是看common文件夹里的00keymap.rpy这个文件的具体代码得知这个变量的。
具体代码如下
[RenPy] 纯文本查看 复制代码
label _hide_windows:
if renpy.context()._menu:
return
if _windows_hidden:
return
python:
_windows_hidden = True
voice_sustain()
ui.saybehavior(dismiss=['dismiss', 'hide_windows'])
ui.interact(suppress_overlay=True, suppress_window=True)
_windows_hidden = False
return
可以看到如果这个_windows_hidden是True的话,就不会执行下面的语句了,从而达到了禁止的效果。
|