乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Unity 延遲執(zhí)行一段代碼的較為優(yōu)雅的方式

       3dC 2016-09-30

      在Unity中,延時執(zhí)行一段代碼或者一個方法或者幾個方法的情況非常普遍。

      一般會用到Invoke和InvokeRepeating方法。顧名思義,第一個是執(zhí)行一次,第二個是重復執(zhí)行。

      看下定義:

      void Invoke(string methodName, float time);

       

      第一個參數(shù)是方法名(注意是字符串形式),并不是更方便的委托。第二個是延時多少秒。只執(zhí)行一次。

      void InvokeRepeating(string methodName, float time, float repeatRate);

       

      InvokeRepeating第二個參數(shù)是延時多少秒后開始,第三個參數(shù)是每次執(zhí)行間隔的秒數(shù)。

       

      你有沒有發(fā)現(xiàn)這兩個方法有個弊端,就是必須輸入方法名!也就是我說,如果我想延時執(zhí)行某段代碼,必須把代碼放在某個方法里,然后使用這Invoke或者InvokeRepeating方法來執(zhí)行。

      這樣對于上下文變量、屬性的引用就會尤為不便,而且不能傳參數(shù)!!!尼瑪,要他還有何用?

       

      我猜你一定用過這樣的方法。沒錯,“協(xié)同”,聽起來還挺高大上的名字啊。

      用StartCoroutine來執(zhí)行一個以IEnumerator為返回值的方法,通常用于異步下載啊,等比較耗時又不能讓游戲卡死的情況。

      還有一個好的類WaitForSeconds,對,它就一個構(gòu)造函數(shù),用來延時的(延時………………比萬艾可好用?比希愛力好用?)。

      好了不廢話了,以下是我自用的延時方法,放在一個類里以靜態(tài)方法存在??梢栽谌魏螘r候任何地方延時指定秒數(shù)的代碼。

      using UnityEngine;
      using System.Collections;
      using System;
      
      public class DelayToInvoke : MonoBehaviour
      {
      
      public static IEnumerator DelayToInvokeDo(Action action, float delaySeconds)
      {
      yield return new WaitForSeconds(delaySeconds);
      action();
      }
      }

       

       

      如何使用呢?

      比如我點擊NGUI的一個Button,則

      void OnClick()
      {
      StartCoroutine(DelayToInvoke.DelayToInvokeDo(() =>
      {
      Application.LoadLevel(“Option”);
      }, 0.1f));
      }

       

      看到了吧

      Application.LoadLevel(“Option”);就是想要延時執(zhí)行的代碼段。

      你可以寫很長很長。Action,隨便搞。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多