Unity延時執行的多種方法小結

2022-09-28 18:06:14 字數 1519 閱讀 6325

目錄

最開始接觸unity的時候,我做延時都是在update裡做計時器。後來才發現,我屮艸芔茻,還有這麼多種更方便延時執行的方式。現在我們就來捋一捋。

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

✨update

invoke

協程dotween

支援引數傳入

✖️✖️

✔️✖️

下表是在不同情況下各方案的執行狀態

✨update

invoke

協程dotween

time.timescale = 0

✔️✖️

✖️✔️

activeself == false

✖️✔️

✖️✔️

enabled == false

✖️✔️

✔️✔️

destroy

ϩ程式設計客棧6;️

✖️✖️

✔️在update等重新整理函式內計時,timer += time.deltatime 當時間達到預期,執行需要延時的方法。 需要注意的是,增量時間time.deltatime是每幀都不同的浮點數。計時器不能用 == 去判斷達成條件。需要用 > 或 >= 加乙個標誌位。以確保函式能執行到且只執行一次 update在 time.timescale = 0 時會正常執行,但這時time.deltatime的值為0。需要這時使用計時器的話,可以使用time.realtimes******artup

private float delaytime = 1;

private float timer = 0;

private bool executed = false;

void update()}}

private void delayfunc()

invoke() 方法是 unity3d 的一種委託機制。使用簡單便捷。 但是這個傢伙和其他方式不太一樣的是,隱藏物體或將指令碼enabled 設定為false,並不會中斷invoke的執行。 invoke支援重複呼叫: invokerepeating("方法名程式設計客棧",延時時長,每次呼叫間隔時長)

private float delaytime = 5;

private void start()

private void delayfunc()

協程本質是迭代器,寫法麻煩,但很好用。可以延時固定時間,也可以延時固定幀。

點選這裡是乙個協程的管理類,支援暫停繼續等功能

private float timer = 0;

private void start()

ienumerator delayfunc()

}如果你使用ugui,那麼你一定知道dotween。dotween是很常用的簡單動畫外掛程式,但有時候我們能用它來做一些奇怪的操作。比如延時函式 執行後只能通過 seq.pause();seq.kill();等自帶函式關閉。 time.timescale = 0,隱藏物體,禁用指令碼,刪除物體等情況下,均繼續執行方法。

private void start()

void delayfunc()

重新延時執行的Js 實現

1.autocomplete 外掛程式,當使用者的輸入空閒0.5s 時,才向服務傳送請求。而不是使用者輸入每乙個字元都要請求伺服器。2.懶載入時,使用者拖動滾動條空閒0.5s時,才遍歷懶載入的img元素,這樣操作比較平滑。對每乙個操作,定義乙個唯一操作碼,重新延時執行時,清空該操作碼的執行體。重新定...

程式開機延時執行的指令碼

今天因為實施需要,一台裝置聯網是通過寬頻認證的,而我們的程式是放在開機啟動項中,所以導致程式啟動時,寬頻還沒連上網路程式已經啟動,程式報 網路 連不上服務錯誤 echo off ping 127.0.0.1 n 60 nul start cmd k c users lenovo desktop te...

多種方法檢視Oracle SQL執行計畫

二.使用oracle第三方工具 plsql developer f5 toad ctrl e 三.使用sql plus 如果plan table表不存在,執行 oracle home rdbms admin utlxplan.sql建立plan table表。如果plustrace角色不存在,執行 ...