一,幾種Invoke調用方式
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class API07Invoke : MonoBehaviour {
// Use this for initialization
void Start () {
//Invoke("Attack", 2);
//延時2s調用Attack
//InvokeRepeating("Attack", 4, 2);
//延時4s開始調用,每2s調用一次
//CancelInvoke();
//不指定參數,取消this腳本里的所有invoke,指定參數取消對應invoke
//IsInvoking();
//不指定參數,判斷this腳本里的是否有invoke在等待隊列中,指定參數判斷對應invoke
}
void Attack() {
Debug.Log("Attack!!!");
}
}
二,正常程序運行方式
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class API08Coroutine : MonoBehaviour {
public GameObject cube;
// Use this for initialization
void Start() {
Debug.Log("123");
ChangeColor();
Debug.Log("321");
}
void ChangeColor() {
Debug.Log("456");
GameObject cube2 = GameObject.Instantiate(cube);//可忽略,下同
cube2.name = "cubu2";
cube2.transform.position += new Vector3(2, 0, 0);
cube2.GetComponent<MeshRenderer>().material.color = Color.magenta;
cube.GetComponent<MeshRenderer>().material.color = Color.gray;
Debug.Log("654");
}
}
三,協程運行方式:
協程,在主程序之外創建的程序,在協程開啓後協程與主程同時運行,不存在先後關係
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class API08Coroutine : MonoBehaviour {
public GameObject cube;
// Use this for initialization
void Start() {
Debug.Log("123");
StartCoroutine(ChangeColor());
//協程方法開啓後繼續執行下面的代碼Debug.Log("321"),不會停下來等待
Debug.Log("321");
}
//協程方法定義
//1.返回值 IEnumerator
//2.返回參數是使用yield return
//3.協程方法的調用StartCoroutine(method())
IEnumerator ChangeColor() {
Debug.Log("456");
GameObject cube2 = GameObject.Instantiate(cube);
cube2.name = "cubu2";
cube2.transform.position += new Vector3(2, 0, 0);
cube2.GetComponent<MeshRenderer>().material.color = Color.magenta;
cube.GetComponent<MeshRenderer>().material.color = Color.gray;
Debug.Log("654");
yield return null;
}
}