首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在lateUpdate中调用协程

如何在lateUpdate中调用协程
EN

Stack Overflow用户
提问于 2016-07-06 23:21:27
回答 1查看 2.1K关注 0票数 0

我喜欢协程。它们就像是自我维持的代码,但问题是它们是在unity框架中的特定时间调用的。根据this的说法,大多数协程都是在更新之后但在动画之前调用的。我想有一个协程类型的系统,可以在内部动画更新之后,但在场景渲染之前调用。这是因为我在动画之后编辑3D模型变换(不依赖于动画)。该怎么做呢?我在C#工作。

EN

回答 1

Stack Overflow用户

发布于 2016-07-07 00:11:54

正如您自己提供的链接中所描述的,这是不可能的。引擎按照它的工作方式工作,这不能从“脚本级别”改变。

然而,如果你坚持使用协程,你可以做的就是让它们只是“准备你的代码的执行”,而把这项工作留给LateUpdate()

要做到这一点,你应该这样做(有点伪代码,因为它是未经测试的)

代码语言:javascript
复制
bool hasToUpdate = false; //class variable

private void LateUpdate() {
    if (hasToUpdate == false) { return; } //I don't like "!" or leave "{}"
    //do the stuff you want to do between 'game logic' and 'rendering'
    //the thing you most probably do now in your coroutine code
    hasToUpdate = false;
}

private void YourCoroutine() {
    //if happened what you want / there was the expected
    //user interaction, yield returned, etc, set class variables
    //to the proper value (if there's anything like that), etc:
    //i.e. move out values from coroutine code to class
    //level and set calculated values you need to set, then:
    hasToUpdate = true;
}

这样,你的协程任务将在你想要的地方执行,并且以你想要的方式执行,但是,即使这应该可以工作,它对我来说也“有点老生常谈”。

不管怎么说。如果没有具体的问题或没有代码,很难说出更多信息,但我希望这会有所帮助。干杯。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38227687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档