1.タイマー
1.定义一个float 的变量
2.然后逐帧减去Time.DeltaTime 的值,直到最后小于0
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
class Test : MonoBehaviour{
private float timer = 2f;
void Update(){
if(timer < 0){
//Doing Something...
}else{
timer -= Time.DeltaTime;
}
}
}
1. コルーチン
1.このコルーチンを開く IEnumerator
だけで、値を返すメソッドを定義します。StartCoroutine
ここで使用する必要があるのは、2 つの違いではIEnumerato
ないことに注意してください。IEnumerable
IEnumerator
: イテレータ インターフェイスですIEnumerable
: IEnumerator に基づくカプセル化インターフェイスであり、IEnumerator を返す GetEnumerator() メソッドがあります。
StartCoroutine
のいくつかのオーバーロード方法
StartCoroutine(string methodName)
: これは、パラメータがない場合にのみ適用されますStartCoroutine(IEnumerator routine)
: メソッドによって呼び出されますStartCoroutine(string methodName, object values)
: パラメーターでの使用に適用され、それに応じてパラメーターの値が渡されます
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
class Test : MonoBehaviour{
void Start(){
StartCoroutine(Func(2.0f));
//StartCoroutine("Func", 2.0f)
}
IEnumerator Func(float delay){
yield return new WaitForSeconds(delay); //程序在这里等待delay长的时间后,再去往下执行
//Doing Something...
}
}
yield
補足
-
yield return null
: コルーチンを一時停止して、次のフレームが実行を継続するのを待ちます -
yield return 0或其他数字
: コルーチンを一時停止して、次のフレームが実行を継続するのを待ちます -
yield return new WairForSeconds(时间)
:指定時間待ってから実行を継続 -
yield return StartCoroutine("协程方法名")
: コルーチンを開く (ネストされたコルーチン)
yield return GameObject
; ゲームオブジェクト取得時に実行yield return new WaitForFixedUpdate()
:次の固定フレーム番号の更新まで待ちますyield return new WaitForEndOfFrame()
: すべてのカメラ画像がレンダリングされて更新されるまで待ちますyield break
; コルーチンの対応するメソッドから飛び出し、その後ろのコードは実行されません
3.電話をかける
Invoke
これも Unity の遅延呼び出しメカニズムですが、呼び出された関数にパラメーターを指定することはできません
Invoke
よく使われる2つの方法
Invoke(string methodName, float time)
: time 秒の遅延の後に methodName 関数を呼び出しますInvokeRepeating(string methodName, float time, int repeatRate)
: repeatRate 呼び出しを繰り返す
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
class Test : MonoBehaviour{
void Start(){
Invoke("Func", 2);
//InVoke("Func", 2 ,3);
}
void Func(float delay){
Debug.Log("Doing Something... ")
//Doing Something...
}
}