Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在lateUpdate中调用协同程序_C#_Unity3d_Unity5_Coroutine - Fatal编程技术网

C# 如何在lateUpdate中调用协同程序

C# 如何在lateUpdate中调用协同程序,c#,unity3d,unity5,coroutine,C#,Unity3d,Unity5,Coroutine,我喜欢合作。它们就像自我维持的代码,但问题是它们在统一框架中的特定时间被调用。根据,大多数协同程序在更新之后但在动画之前调用。我希望有一个协同程序类型的系统,可以在内部动画更新之后但在场景渲染之前调用。这是因为我在动画之后编辑三维模型变换(不依赖于动画)。如何做到这一点?我在C#工作。正如您自己提供的链接所述,这是不可能的。引擎按其工作方式工作,这不能从“脚本级别”更改。 但是,如果您坚持使用协同程序,您可以做的是让它们只是“准备代码的执行”,并将任务留给LateUpdate() 要实现这一点,

我喜欢合作。它们就像自我维持的代码,但问题是它们在统一框架中的特定时间被调用。根据,大多数协同程序在更新之后但在动画之前调用。我希望有一个协同程序类型的系统,可以在内部动画更新之后但在场景渲染之前调用。这是因为我在动画之后编辑三维模型变换(不依赖于动画)。如何做到这一点?我在C#工作。

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

但是,如果您坚持使用协同程序,您可以做的是让它们只是“准备代码的执行”,并将任务留给
LateUpdate()

要实现这一点,您应该执行以下操作(未经测试,有点像伪代码)

这样,您的协同程序任务将在您想要的地方执行,并且以您想要的方式执行,但是,尽管这应该可以工作,但我觉得“有点不舒服”。


无论如何。如果没有具体的问题或者没有代码,很难说出更多,但我希望这能有所帮助。干杯。

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

但是,如果您坚持使用协同程序,您可以做的是让它们只是“准备代码的执行”,并将任务留给
LateUpdate()

要实现这一点,您应该执行以下操作(未经测试,有点像伪代码)

这样,您的协同程序任务将在您想要的地方执行,并且以您想要的方式执行,但是,尽管这应该可以工作,但我觉得“有点不舒服”。


无论如何。如果没有具体的问题或者没有代码,很难说出更多,但我希望这能有所帮助。干杯。

谢谢你的建议。它根据你的回答给了我一个主意。@Darnell不客气。祝你的项目好运:)谢谢你的建议。它根据你的回答给了我一个主意。@Darnell不客气。祝您的项目好运:)
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;
}