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

Project1

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

[交流讨论] 对话框与并行事件的奇妙纠葛(

[复制链接]

Lv6.析梦学徒

老鹰

梦石
40
星屑
33407
在线时间
6552 小时
注册时间
2012-5-26
帖子
3178

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

跳转到指定楼层
1
发表于 2020-5-14 08:52:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 百里_飞柳 于 2020-5-14 09:34 编辑

此帖为对RGSS3中并行事件被对话框暂停的探讨,欢迎大家阅读讨论。



首先,你写了一个非常简单的 玩家按键触发 的NPC,
其中指令如下图,是一个非常常见的含有一句对话的那种。


然后,你想要一些别的东西,比如在当前地图上时一直有个烦人精隔一段时间就叨叨逼逼一下,
便新增了如下图指令的 并行事件,其中1号变量在计数,每次显示一次就自加 1。


于是当在地图上行动时,就是这样的效果:
每在地图上空闲着1s,这个烦人精就开始逼逼,按掉后变量自加1,1s后他又来逼逼了。


然后你赶紧去找NPC搭个话

好了,现在烦人精没法逼逼了,因为对话框被占用了,他必须等到这边对话完成才能继续逼逼。

当然你很快就觉得这种时不时就自动触发的对话真的太烦人了,
于是你想改掉,换成比如随着计时而画面变色等其他特效,
之前的并行执行的事件此时变成了这样:

当然我没有加这些特效,简单点,讲话的方式简单点。

现在你进行测试。
当玩家在地图上行走时,一切正常。

但是!当玩家与NPC对话时,并行事件在执行完当前内容后,居然没有继续执行,而是被暂停了!!

明明并行事件里没有对话,为啥它还会被暂停?

这个就牵扯到了RGSS3里的一个设计思想:想尽可能确保事件能同步执行
这从脚本中可以找到答案:

在事件的执行时,额外调用了一个 wait_for_message 方法,也就是它,阻碍了事件的再次执行。

尽管并行事件与普通执行的事件各自有一个事件解释器,它们各自执行,互不打扰,
但是在地图上时,对话框只有一个,大家都是用这一个。
因此当对话框在显示时,任何一个事件解释器的 wait_for_message 指令都会被触发,并等待直至对话框关闭。

那这个设计到底有没有意义呢?
我 也 不 知 道 呢 ~

但是这可不行,明明应该是独立的并行事件,怎么能因为对话框而停下来呢?不要停下来啊!计数的!
把 run 方法中的 wait_for_message 注释掉后,再来试试:

现在完美啦!

PS:因为显示文本指令里已经自带了 wait_for_message 方法,因此如果并行事件中还是有显示对话的话,它依然会等待对话框关闭再继续执行、显示它的对话。

如果你不想污染默认的脚本,可以在最下面的插件脚本处新增以下的覆盖脚本,并命名为 对话框不再阻止并行事件
当然请先确保没有使用任何修改了事件解释器类的插件。
RUBY 代码复制
  1. class Game_Interpreter
  2.   #--------------------------------------------------------------------------
  3.   # ● 执行
  4.   #--------------------------------------------------------------------------
  5.   def run
  6.     #wait_for_message
  7.     while @list[@index] do
  8.       execute_command
  9.       @index += 1
  10.     end
  11.     Fiber.yield
  12.     @fiber = nil
  13.   end
  14. end

评分

参与人数 11星屑 +50 +10 收起 理由
风雨流盼 + 1 塞糖
夏虫沉默 + 1 精品文章
Nil2018 + 1 精品文章
W.Q.C. + 1 不要停下来啊!
岸边鸬鹚 + 50 我很赞同
congwsbn + 1 精品文章
火锅深处 + 1 我很赞同
阵颜 + 1 来学习了
又囧又怨的炅鸢 + 1 塞糖
whitedewxiao + 1 精品文章

查看全部评分

Lv3.寻梦者

梦石
0
星屑
2978
在线时间
298 小时
注册时间
2018-4-6
帖子
328
2
发表于 2020-5-14 09:21:50 | 只看该作者
老鹰出品,必属精品
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

梦石
56
星屑
14418
在线时间
3781 小时
注册时间
2016-6-17
帖子
1047

极短24参与开拓者

3
发表于 2020-5-15 20:31:09 | 只看该作者
感谢老鹰分享~!
不用03换VA做文字游戏相关就总有各种莫名其妙的对话框问题1551
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
407
在线时间
34 小时
注册时间
2017-12-4
帖子
20
4
发表于 2020-8-9 19:30:45 | 只看该作者
涨知识了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
115
在线时间
8 小时
注册时间
2021-2-3
帖子
19
5
发表于 2021-2-27 00:12:44 | 只看该作者
阿巴阿巴阿巴(吃瓜群众)
一个想玩上各位大佬做的精美像素rpg的萌新qwq
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-26 12:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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