推奨読書:
構文コルーチンを理解するには?使用方法で開発?これは、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