2016-07-06 18 views
0

コルーチンが大好きです。彼らは自己維持コードのようなものですが、問題はそれらが統一のフレームの特定の時間に呼び出されるということです。 thisによれば、ほとんどのコルーチンは更新後でアニメーションの前に呼び出されます。内部アニメーションの更新後でシーンレンダリングの前に呼び出すことができるコルーチンタイプのシステムを用意したいと思います。これは、アニメーションの後に3Dモデルの変換を編集しているためです(アニメーションに依存しません)。これを行う方法?私はC#で働いています。lateUpdateでCoroutineを呼び出す方法

答えて

2

あなた自身が提供したリンクに記載されているように、これは不可能です。エンジンは動作しますが、これは "スクリプトレベル"から変更することはできません。

ただし、コルーチンの使用を主張する場合は、「コードの実行を準備する」ようにして、ジョブをLateUpdate()のままにしておきます。
(それは未テストだとちょっと擬似コード)これを実現するために、あなたのような何かを行う必要があります

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; 
}

この方法で、あなたのコルーチンのタスクは、あなたがしたい場所を正確に実行して、必要な正確な方法しかし、これでもかのだろう私には「ちょっとハッキリ」と感じます。

とにかく。コードの有無にかかわらず、具体的な問題がなくてもそれ以上のことを伝えるのは難しいですが、これが役立つことを願っています。乾杯。

+0

ありがとうございます。それはあなたの答えに基づいて私にアイデアを与えました。 – Darnell

+0

@ダネルあなたは大歓迎です。あなたのプロジェクトで幸運を祈る:) –

関連する問題