コルーチンの深い理解のユニティ

推奨読書:

構文コルーチンを理解するには?使用方法で開発?これは、Unityが直面する初心者のための問題です。

コルーチン構文を理解する方法:

1.コルーチン、定義、「コルーチン」により、共同作業をします。
2.操作は、1秒を待つためにゲーム内でのように行われます。私たちは、ゲームがメインスレッドが立ち往生ので、1秒ましょうが、コルーチンのコラボレーションを開いて、コルーチン(それがないように、スレッド)も、メインスレッドによって駆動され、それが到達したか否かを検出するために、各フレームになりますことはできません完全な条件。1秒後、それを1人の第二糸皇帝で検出されたときに、このような動作を行います。条件が満たされている、それは以前に設定され良好な相関動作を実行します。

なぜコルーチン必要がありますか?

(1)Uniyコアロジックは、問題の開発を容易にするために、シングルスレッドであり、統一されたライフサイクル管理、ロック考慮する必要がありません。
(2)ガイドステップ動作のいくつかは、このようなリソースローディングとして、非常に時間がかかり、ユーザーがマルチスレッド開発の使用を許可する場合、開発の全体の論理が非常に複雑になります。コルーチンによってカプセル化された、ユーザーフレンドリー。操作と費やされる時間の一部のために、エンジンは、Unityが連続した状態を経て、マルチスレッド完了する底、及びコルーチンを経て完成されたローディング動作にアクセスするために決定されるであろう。
コルーチンのアプローチを開始します。

この方法の一つ:

StartCoroutine(IEnumerator routine)

方法2:

StartCoroutine(string routine)StartCoroutine(string routine,object value) 
//通过传入函数名字的字符串启动协程的性能开销要更高,但这种方式启动的协程可以通过StopCoroutine(string methondname)来终止,这种方式还有一个限制就是只能传递一个参数。

メソッドのコルーチンの終了
方法:

StopCoroutine(string methondname)只能终止通过字符串名字启动的协程

方法2:

StopCoroutine(Coroutine coroutine)

方法3:

StopAllCoroutines()终止所有协程

方法4:終端はコルーチン内で使用することができます

yeild break;

もう一つの方法は、することですfalseに設定し、アクティブオブジェクトのプロパティを指示し、ピットがあり、簡単にバグをリード

コルーチンのいくつかの特徴:
(1)コルーチンに別のコルーチンを開始することができる
(2)コルーチンを別のコルーチンを中断することができる
(3)は、2つのコルーチンが並列に動作してもよい
コルーチン(4)コルーチンの実行を再開するとき収率によって、任意の時点で一時停止することができ、実装プロセスは、戻り値yeildを判定する
(5)は、複数のゲームフレーム周期で動作する場合、性能はほとんど追加のパフォーマンスオーバーヘッド、非常に良好であるコルーチン
( 6)StartCoroutine()関数は、常にすぐに戻り、関係なく、あなたがyeild何戻り値がされた
(7)複数のコルーチンのオーダーの最後に、その開始シーケンスと一致し、彼らは最後の間で同じフレーム内にある場合でも、という保証するものではありません

yeild戻り値について
(1)はnull、数値、文字列、ブールさえ式、関数、ネストされたコルーチンかもしれません。
復帰は、関数呼び出し、代入式である場合(2)、ネストされたコルーチンは、直接機能または発現を呼びます。
呼び出しが完了した後、(3)一般的なコルーチンがアップデートを実行している、yeild条件の裏に先立っが満たされている、コルーチンは常にそこにハングします。

さまざまな条件を返すyeildに対応した異なる種類:
(1)ヌル、数値、文字列:ランニングは、すべての機能の更新(後に次のフレームで実行し続けます)
(2)WaitForSeconds:指定された遅延時間、すべての更新(後に)の実行機能の後に実行し続け
関数はすべてFixedUpdate(で実行した後に)実行し続ける:(3)WaitForFixedUpdate。(FixedUpdate()フレームレートとアップデートが()と同じではないので、これは次のフレームを意味しないことに注意してください)
(3)WWWW:WWWリソースロードを実行し続けた場合。(他の非同期リソースローディング機能は同じです)

StartCoroutine:ネストされたコルーチンの実行完了後に実行し続けます。

あなたは、詳細な調査のコルーチンを実現していきます場合は、あなたが見ることができるUnityの基礎となるイテレータの実装の原則の「C#を経由でCLR」と2冊の「C#の深い理解」は、そのコルーチンを通じて達成されます。

ユニティ、典型的には次のコルーチン:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Start() {
        StartCoroutine(FuncA());
    }

    IEnumerator FuncA() {
        Debug.Log("Log1");
        yield return new WaitForSeconds(1.0f);
        Debug.Log("Log2");
        yield return StartCoroutine(FuncB());
        Debug.Log("Log3");
    }

    IEnumerator FuncB() {
        Debug.Log("Log4");
        yield return new WaitForSeconds(2.0f);
        Debug.Log("Log5");
    }
}

出力:

Log1
(等待1s)  
Log2  
Log4  
(等待2s)  
Log5  
Log3

おすすめ

転載: blog.csdn.net/shirln/article/details/95215720