提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
前言
提示:這里可以添加本文要記錄的大概內(nèi)容:
協(xié)程的用法 和 Invoke 的等待事件使用
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、Invoke用法
//methodName:方法名稱
//time:等待時間
Invoke(string methodName, float time);
//methodName:方法名稱
//time:等待時間
//repeatRate:每次重復(fù)執(zhí)行之間的時間間隔
InvokeRepeating(string methodName, float time, float repeatRate);
//用法
void Start()
{
//等待2秒后執(zhí)行
Invoke("OnInvoke",2f);
//首次等待2秒后執(zhí)行,然后5秒后 再次執(zhí)行
InvokeRepeating("OnInvoke",2f,5);
}
public void OnInvoke()
{
}
二、協(xié)程的用法
1.yiele return 介紹
#region yiele return 介紹
/*
*yield return null; // 下一幀再執(zhí)行后續(xù)代碼(通常用于循環(huán)語句中)
*yield return 0; //下一幀再執(zhí)行后續(xù)代碼
*yield return 6;//(任意數(shù)字) 下一幀再執(zhí)行后續(xù)代碼
*yield break; //直接結(jié)束該協(xié)程的后續(xù)操作
*yield return asyncOperation;//等異步操作結(jié)束后再執(zhí)行后續(xù)代碼
*yield return StartCoroution(某個協(xié)程);//等待某個協(xié)程執(zhí)行完畢后再執(zhí)行后續(xù)代碼
*yield return WWW();//等待WWW操作完成后再執(zhí)行后續(xù)代碼
*yield return new WaitForEndOfFrame();//等待幀結(jié)束,等待直到所有的攝像機和GUI被渲染完成后,在該幀顯示在屏幕之前執(zhí)行
*yield return new WaitForSeconds(0.3f);//等待0.3秒,一段指定的時間延遲之后繼續(xù)執(zhí)行,在所有的Update函數(shù)完成調(diào)用的那一幀之后(這里的時間會受到Time.timeScale的影響);
*yield return new WaitForSecondsRealtime(0.3f);//等待0.3秒,一段指定的時間延遲之后繼續(xù)執(zhí)行,在所有的Update函數(shù)完成調(diào)用的那一幀之后(這里的時間不受到Time.timeScale的影響);
*yield return WaitForFixedUpdate();//等待下一次FixedUpdate開始時再執(zhí)行后續(xù)代碼
*yield return new WaitUntil()//將協(xié)同執(zhí)行直到 當輸入的參數(shù)(或者委托)為true的時候....如:yield return new WaitUntil(() => frame >= 10);
*yield return new WaitWhile()//將協(xié)同執(zhí)行直到 當輸入的參數(shù)(或者委托)為false的時候.... 如:yield return new WaitWhile(() => frame < 10);
*/
#endregion
2.協(xié)程的使用
代碼如下(示例):文章來源:http://www.zghlxwxcb.cn/news/detail-849834.html
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
public class NewBehaviourScript : MonoBehaviour
{
// Start is called before the first frame update
public bool bo;
int NumIndex;
void Start()
{
NumIndex = this.transform.childCount;
//等待幾秒執(zhí)行
// WaitForSeconds();
//持續(xù)等待 條件達成 再執(zhí)行
if (NumIndex>0)
{
// StartCoroutine(PlayFingerClickTask02());
}
// Invoke("OnInvoke",2f);
InvokeRepeating("OnInvoke", 2f, 5);
}
/// <summary>
/// 方法一
/// </summary>
/// <returns></returns>
IEnumerator WaitForSeconds()
{
//等待3秒(這里的時間會受到Time.timeScale的影響);
yield return new WaitForSeconds(3);
Debug.Log("距離程序啟動已經(jīng)過了3s");
}
/// <summary>
/// 方法二 持續(xù)等待條件為true后執(zhí)行(強烈推薦)
/// </summary>
/// <returns></returns>
IEnumerator PlayFingerClickTask02()
{
Debug.Log("等待");
//等待區(qū)
yield return new WaitUntil(() => bo);
bo = false;
NumIndex -= 1;
Debug.Log("完成了");
if (NumIndex > 0)
{
StartCoroutine(PlayFingerClickTask02());
}
}
#region yiele return 介紹
/*
*yield return null; // 下一幀再執(zhí)行后續(xù)代碼(通常用于循環(huán)語句中)
*yield return 0; //下一幀再執(zhí)行后續(xù)代碼
*yield return 6;//(任意數(shù)字) 下一幀再執(zhí)行后續(xù)代碼
*yield break; //直接結(jié)束該協(xié)程的后續(xù)操作
*yield return asyncOperation;//等異步操作結(jié)束后再執(zhí)行后續(xù)代碼
*yield return StartCoroution(某個協(xié)程);//等待某個協(xié)程執(zhí)行完畢后再執(zhí)行后續(xù)代碼
*yield return WWW();//等待WWW操作完成后再執(zhí)行后續(xù)代碼
*yield return new WaitForEndOfFrame();//等待幀結(jié)束,等待直到所有的攝像機和GUI被渲染完成后,在該幀顯示在屏幕之前執(zhí)行
*yield return new WaitForSeconds(0.3f);//等待0.3秒,一段指定的時間延遲之后繼續(xù)執(zhí)行,在所有的Update函數(shù)完成調(diào)用的那一幀之后(這里的時間會受到Time.timeScale的影響);
*yield return new WaitForSecondsRealtime(0.3f);//等待0.3秒,一段指定的時間延遲之后繼續(xù)執(zhí)行,在所有的Update函數(shù)完成調(diào)用的那一幀之后(這里的時間不受到Time.timeScale的影響);
*yield return WaitForFixedUpdate();//等待下一次FixedUpdate開始時再執(zhí)行后續(xù)代碼
*yield return new WaitUntil()//將協(xié)同執(zhí)行直到 當輸入的參數(shù)(或者委托)為true的時候....如:yield return new WaitUntil(() => frame >= 10);
*yield return new WaitWhile()//將協(xié)同執(zhí)行直到 當輸入的參數(shù)(或者委托)為false的時候.... 如:yield return new WaitWhile(() => frame < 10);
*/
#endregion
/// <summary>
/// 方法三
/// </summary>
public void OnInvoke()
{
Debug.Log("1111111");
}
}
總結(jié)
好記性不如爛筆頭!文章來源地址http://www.zghlxwxcb.cn/news/detail-849834.html
到了這里,關(guān)于unity 等待事件之協(xié)程和Invoke的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!