-
Notifications
You must be signed in to change notification settings - Fork 594
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
游戏世界暂停后,coroutine delay 功能不工作 #276
Comments
刚看了下源码,蓝图的 Delay CallbackTarget 应该就是当前对象本身, widget 里面就是绑定了当前 widget
发现 UnLua 里面 Latent 绑定是的 UnluaManager,。 而 FLatentActionManager::ProcessLatentActions 在被 widget 调用处理 Latent Actions 时,会按 CallbackTarget 对象过滤,也就是只触发当前 widget 的。只有在 LevelTick 时,ProcessLatentActions 调用是传入 nullprt ,然后就不会过滤对象,然后才会处理所有没有被处理的 Latent 回调,包括 UnLua 的。。。。。 |
的确有这个问题,因为一些历史设计原因目前没有找到更优雅的设计,可以参考上面的两个提交: 增加了UUnLuaLatentAction:SetTickableWhenPaused()用来应对需要Pause和非Pause的应用场景,下个版本会合入master |
辛苦辛苦,, 由于不太了解 C++ 方面的东西,我自己就简单弄了一个暂停游戏后可以手动 Tick 的 TimerManager 来解决延迟时的问题。。。 |
Unlua 1.2
通过蓝图创建 UI 后,使用蓝图节点 SetGamePause。
这时,游戏世界是暂停的,UI是可以正常使用的。
在 widget 蓝图中, construct 后或者任何事件后,都可以正常加入 delay 节点,并能执行节点后的逻辑。
而在 lua 中通过 coroutine 调用的 delay ,在游戏暂停时,永远不会被执行,只会等到游戏取消暂停后才会继续执行。
lua 调用 delay 传入的 world context object 是 widget 本身。
源代码看不懂 latent 的实现。求助!
The text was updated successfully, but these errors were encountered: