Version: 5.3 (switch to 5.4b)
言語English
  • C#
  • JS

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

CustomYieldInstruction

class in UnityEngine

フィードバック

ありがとうございます

この度はドキュメントの品質向上のためにご意見・ご要望をお寄せいただき、誠にありがとうございます。頂いた内容をドキュメントチームで確認し、必要に応じて修正を致します。

閉じる

送信に失敗しました

なんらかのエラーが発生したため送信が出来ませんでした。しばらく経ってから<a>もう一度送信</a>してください。ドキュメントの品質向上のために時間を割いて頂き誠にありがとうございます。

閉じる

キャンセル

マニュアルに切り替える

説明

コルーチンを中断するカスタム Yield 命令の基本クラス

CustomYieldInstruction はイベントが起こるまでコルーチンの実行を中断するカスタム Yield 命令を実装することができます。水面下では、カスタム Yield 命令はちょうど別の実行中のコルーチンです。それを実装するには CustomYieldInstruction クラスから継承し、keepWaiting プロパティーをオーバーライドします。コルーチンを中断させておくために True を返します。コルーチンの実行を続行させるために False を返します。ref::keepWaiting プロパティーは MonoBehaviour.Update の後と MonoBehaviour.LateUpdate の前の各フレームにクエリさせます。

このクラスは Unity 5.3 以降で使用できます。

no example available in JavaScript
using UnityEngine;

// Implementation of WaitWhile yield instruction. This can be later used as: // yield return new WaitWhile(() => Princess.isInCastle); class WaitWhile: CustomYieldInstruction { Func<bool> m_Predicate;

public override bool keepWaiting { get { return m_Predicate(); } }

public WaitWhile(Func<bool> predicate) { m_Predicate = predicate; } }

詳細に制御して、より複雑な Yield 命令を実装するために System.Collections.IEnumerator クラスから直接継承できます。この場合、ref::keepWaiting プロパティーを実装するのと同じように MoveNext() メソッドを実装します。さらに Current プロパティーでオブジェクトを返すこともできます。 MoveNext() メソッドを実行後、 Unity のコルーチンスケジューラによって処理されます。ですから例えば CurrentIEnumerator から継承する別のオブジェクトを返した場合、現在の列挙子はひとつが返ってくるまで中断されます。

no example available in JavaScript
// Same WaitWhile implemented by inheriting from IEnumerator.
class WaitWhile: IEnumerator {
	Func<bool> m_Predicate;

public object Current { get { return null; } }

public bool MoveNext() { return m_Predicate(); }

public void Reset() {}

public WaitWhile(Func<bool> predicate) { m_Predicate = predicate; } }

変数

keepWaitingコルーチンを中断させておく必要がある場合、表示します。