欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Unity延時執(zhí)行的多種方法小結(jié)

 更新時間:2021年07月06日 16:13:43   作者:時光不染  
本文主要介紹了4種延時執(zhí)行的方法,主要包括Update計時器,Invoke,協(xié)程,DoTween,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最開始接觸unity的時候,我做延時都是在update里做計時器。后來才發(fā)現(xiàn),我屮艸芔茻,還有這么多種更方便延時執(zhí)行的方式?,F(xiàn)在我們就來捋一捋。

本文列舉的有以下四種,如有錯漏,歡迎補充指正

Update Invoke 協(xié)程 DoTween
支持參數(shù)傳入 ✖️ ✖️ ✔️ ✖️

下表是在不同情況下各方案的執(zhí)行狀態(tài)

Update Invoke 協(xié)程 DoTween
Time.timeScale = 0 ✔️ ✖️ ✖️ ✔️
activeSelf == false ✖️ ✔️ ✖️ ✔️
enabled == false ✖️ ✔️ ✔️ ✔️
destroy ✖️ ✖️ ✖️ ✔️

Update計時器

在Update等刷新函數(shù)內(nèi)計時,timer += Time.deltaTime 當(dāng)時間達到預(yù)期,執(zhí)行需要延時的方法。 需要注意的是,增量時間Time.deltaTime是每幀都不同的浮點數(shù)。計時器不能用 == 去判斷達成條件。需要用 > 或 >= 加一個標(biāo)志位。以確保函數(shù)能執(zhí)行到且只執(zhí)行一次 Update在 Time.timeScale = 0 時會正常執(zhí)行,但這時Time.deltaTime的值為0。需要這時使用計時器的話,可以使用Time.realtimeSinceStartup

 private float delayTime = 1;
    private float timer = 0;
    private bool executed = false;
    void Update(){
        if (executed == false){
            timer += Time.deltaTime;
            if (timer >= 1){
                executed = true;
                DelayFunc();
            }
        }
    }
    private void DelayFunc(){
        print("執(zhí)行測試函數(shù)");
    }

Invoke

Invoke() 方法是 Unity3D 的一種委托機制。使用簡單便捷。 但是這個家伙和其他方式不太一樣的是,隱藏物體或?qū)⒛_本enabled 設(shè)置為false,并不會中斷Invoke的執(zhí)行。 Invoke支持重復(fù)調(diào)用: InvokeRepeating("方法名",延時時長,每次調(diào)用間隔時長)

 private float delayTime = 5;
    private void Start(){ 
        Invoke("DelayFunc",delayTime);
        //InvokeRepeating("DelayFunc",delayTime,cdTime);
    }
    private void DelayFunc(){
        print("執(zhí)行測試函數(shù)");
    }

協(xié)程

協(xié)程本質(zhì)是迭代器,寫法麻煩,但很好用??梢匝訒r固定時間,也可以延時固定幀。
點擊這里是一個協(xié)程的管理類,支持暫停繼續(xù)等功能

  private float timer = 0;
    private void Start()
    {
        StartCoroutine("DelayFunc");
        Time.timeScale = 0;
    }
    IEnumerator DelayFunc()
    {
        while ( timer < 30)
        {
            yield return new WaitForSeconds(1);
            timer++;
            print("執(zhí)行測試函數(shù)"+timer); 
        }
    }

DoTween

如果你使用UGUI,那么你一定知道DoTween。DoTween是很常用的簡單動畫插件,但有時候我們能用它來做一些奇怪的操作。比如延時函數(shù) 執(zhí)行后只能通過 seq.Pause();seq.Kill();等自帶函數(shù)關(guān)閉。 Time.timeScale = 0,隱藏物體,禁用腳本,刪除物體等情況下,均繼續(xù)執(zhí)行方法。

 private void Start()
    {
        seq = DOTween.Sequence();
        seq.AppendInterval(5);
        seq.AppendCallback(DelayFunc);
        seq.SetAutoKill(false);
        seq.SetUpdate(true);//設(shè)為true時可在Time.timeScale=0的情況下正常執(zhí)行
        
    }
    void DelayFunc()
    {
        print("執(zhí)行測試函數(shù)"); 
    }

到此這篇關(guān)于Unity延時執(zhí)行的多種方法小結(jié)的文章就介紹到這了,更多相關(guān)Unity延時執(zhí)行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C# Chart折線圖使用鼠標(biāo)滾輪放大、縮小和平移曲線方式

    C# Chart折線圖使用鼠標(biāo)滾輪放大、縮小和平移曲線方式

    這篇文章主要介紹了C# Chart折線圖使用鼠標(biāo)滾輪放大、縮小和平移曲線方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 如何解決hash沖突

    如何解決hash沖突

    上篇文章 為什么哈希存取比較快?使用它需要付出什么代價 只是簡單介紹了使用hash所帶來的利與弊。并未涉及hash的技術(shù)細節(jié),本文則著重學(xué)習(xí)一下如何解決哈希編址的沖突問題。
    2016-06-06
  • C#調(diào)用python腳本的方法步驟(2種)

    C#調(diào)用python腳本的方法步驟(2種)

    這篇文章主要介紹了C#調(diào)用python腳本的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • C#實現(xiàn)導(dǎo)入CSV文件到Excel工作簿的方法

    C#實現(xiàn)導(dǎo)入CSV文件到Excel工作簿的方法

    這篇文章主要介紹了C#實現(xiàn)導(dǎo)入CSV文件到Excel工作簿的方法,涉及C#針對office組件的相關(guān)操作技巧,需要的朋友可以參考下
    2015-06-06
  • C# .Net8 switch的用法小結(jié)

    C# .Net8 switch的用法小結(jié)

    在 .net 8中,switch 不需要再和傳統(tǒng)的寫法一樣了,會更加的方便,本文主要介紹了C# .Net8 switch的用法小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • C#生成隨機ArrayList的方法

    C#生成隨機ArrayList的方法

    這篇文章主要介紹了C#生成隨機ArrayList的方法,實例分析了C#中ArrayList的相關(guān)操作技巧,需要的朋友可以參考下
    2015-06-06
  • C#?設(shè)置Chart的X軸為時間軸???????詳情

    C#?設(shè)置Chart的X軸為時間軸???????詳情

    這篇文章主要介紹了C#設(shè)置Chart的X軸為時間軸???????詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • WinForm使用正則表達式提取內(nèi)容的方法示例

    WinForm使用正則表達式提取內(nèi)容的方法示例

    這篇文章主要介紹了WinForm使用正則表達式提取內(nèi)容的方法,結(jié)合實例形式分析了WinForm基于正則匹配獲取指定內(nèi)容的相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • 基于C#實現(xiàn)的多生產(chǎn)者多消費者同步問題實例

    基于C#實現(xiàn)的多生產(chǎn)者多消費者同步問題實例

    這篇文章主要介紹了基于C#實現(xiàn)的多生產(chǎn)者多消費者同步問題,包括了加鎖與釋放鎖,以及對應(yīng)臨界資源的訪問。是比較實用的技巧,需要的朋友可以參考下
    2014-09-09
  • 算法證明每一位都相同十進制數(shù)不是完全平方數(shù)

    算法證明每一位都相同十進制數(shù)不是完全平方數(shù)

    這篇文章主要為大家介紹了算法證明每一位都相同十進制數(shù)不是完全平方數(shù)的過程論述,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05

最新評論