Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: backlog record async #617

Open
wants to merge 2 commits into
base: dev
Choose a base branch
from

Conversation

ClodLingxi
Copy link
Contributor

发生于以下Scene:

  1. 任意语句X(带 -next):
  2. Say
    导致2.记录的Backlog不包括X的动作后续Effect的更新

@ClodLingxi
Copy link
Contributor Author

实践中发现 motion 和 expression 同在不同步的问题

@MakinoharaShoko
Copy link
Member

你的修改延迟了 Backlog 记录,考虑一种情况:退出时间特别长,以至于还没退出时,已经结束了2句或更多的对话,这时候就会导致 Backlog 记录混乱。

更为稳妥的方法是,我们引入一个机制:
1、设定一个随机字符串,这一字符串在每次记录完 Backlog 后被更新
2、每次调用动画时,都记录这一字符串
3、Backlog 记录时,也记录下这一字符串
4、动画调用结束时,通过找 Backlog 中的符合这一字符串的条目,修改这一条目的 Effect 来完成目标。

@MakinoharaShoko
Copy link
Member

并且,我希望能够提供一个简短的,复现该问题的,可运行的脚本。因为理论上来说,我不是很清楚为什么这一问题会发生。
对于进场动画的情况,因为 WebGAL 具有演出恢复的功能,就算结束时状态记录异常,演出恢复也可以重放动画,使其实际上正常。
对于出场动画的情况,因为立绘已经不存在,所以记录不记录结束状态无所谓。
对于进场动画结束后下一条语句的情况,因为 WebGAL 要求下一条语句开始前,上一条语句必须完全完成,动画会推动到结束状态,所以下一句话也不会记录错误的结束状态。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants