task
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
La libreria attività consente di programmare funzioni e thread con il programmatore di attività.
Le funzioni disponibili in questa libreria generalmente supportano funzioni e thread.Nella maggior parte dei casi l'utilizzo di una funzione è sufficiente, ma per casi più avanzati è consigliato familiarizzare con la libreria coroutine.
Sommario
Funzioni
Chiama/riprende una funzione/coroutine immediatamente attraverso il Agendadel motore.
Chiama/riprende una funzione/coroutine alla fine del ciclo di ripresa attuale.
Programma una funzione/coroutine da chiamare/riprendere nel prossimo battito cardiaco dopo che è passata la durata indicata (in secondi), senza limitare la velocità.
Causa l'esecuzione del seguente codice in parallelo.
Causa l'esecuzione del seguente codice in serie.
Rilascia il thread attuale fino al prossimo battito cardiaco in cui è passata la durata indicata (in secondi), senza rallentare.
Annulla un Filo, impedendo il suo riavvio.
Funzioni
spawn
Accetta una funzione o un thread (come restituito da coroutine.creare) e lo chiama/riprende immediatamente attraverso il Agendadell'engine.Gli argomenti dopo il primo vengono inviati alla funzione/thread.
Questa funzione si basa sul modello fastSpawn piuttosto che essere una sostituzione della funzione globale deprecata spawn.Si consiglia di utilizzare questa funzione invece di fastSpawn.
Se lo script di chiamata è attualmente in esecuzione in una fase di esecuzione seriale, la funzione o il thread generato viene ripreso nella fase di esecuzione seriale attuale.Se lo script di chiamata è attualmente in esecuzione in una fase di esecuzione parallela, la funzione o il thread generato viene ripreso nella fase di esecuzione parallela attuale.Per maggiori informazioni, vedi Luau parallelo.
Parametri
Restituzioni
Il Filoprogrammato.
defer
Accetta una funzione o un thread (come restituito da coroutine.creare) e lo rimanda fino alla fine del ciclo di ripresa attuale, a quel punto viene ripreso con il programmatore dell'engine come con task.spawn() .Gli argomenti dopo il primo vengono inviati alla funzione/thread.
Questa funzione deve essere utilizzata quando un comportamento simile a task.spawn() è desiderabile, ma il thread non deve essere eseguito immediatamente.
Se lo script di chiamata è attualmente in esecuzione in una fase di esecuzione seriale, la funzione o il thread delegato viene ripreso in una fase di esecuzione seriale.Se lo script di chiamata è attualmente in esecuzione in una fase di esecuzione parallela, la funzione o il thread delegato viene ripreso in una fase di esecuzione parallela.Per maggiori informazioni, vedi Luau parallelo.
Parametri
Restituzioni
Il Filoprogrammato.
delay
Accetta una funzione o un thread (come restituito da coroutine.creare) e lo programma per essere chiamato/ripreso nel prossimo Heartbeat dopo il lasso di tempo dato in secondi.Gli argomenti dopo il secondo vengono inviati alla funzione/thread.
Questa funzione differisce dalla funzione globale deprecata delay in quanto non si verifica alcuna accelerazione : sullo stesso passaggio di Heartbeat in cui è passato abbastanza tempo, la funzione è garantita di essere chiamata/ripresa.Fornire una durata di zero (0) garantirà che la funzione venga chiamata nel prossimo battito di cuore.
Puoi calcolare il tempo effettivo trascorso chiamando os.clock() al momento della programmazione e nella funzione programmata.
Se lo script di chiamata è attualmente in esecuzione in una fase di esecuzione seriale, la funzione o il thread ritardato viene ripreso in una fase di esecuzione seriale.Se lo script di chiamata è attualmente in esecuzione in una fase di esecuzione parallela, la funzione o il thread ritardato viene ripreso in una fase di esecuzione parallela.Per maggiori informazioni, vedi Luau parallelo.
Parametri
Restituzioni
Il Filoprogrammato.
desynchronize
Se lo script di chiamata è attualmente in esecuzione in una fase di esecuzione seriale, desynchronize sospende lo script e lo script verrà ripreso nella prossima fase di esecuzione parallela.Se lo script di chiamata è attualmente in esecuzione in una fase di esecuzione parallela, desynchronize restituisce immediatamente e non ha alcun effetto.
Solo gli script che sono discendenti di un Attore possono chiamare questo metodo.Se uno script al di fuori di un Attore chiama questo metodo, verrà sollevata un'errore.ModuleScript può anche chiamare desynchronize finché l'istanziamento del modulo che lo chiama era richiesto da uno script che è un discendente di un Attore.
Per maggiori informazioni, vedi Luau parallelo.
Restituzioni
synchronize
Se lo script di chiamata è attualmente in esecuzione in una fase di esecuzione parallela, synchronize sospende lo script e lo script verrà ripreso nella prossima fase di esecuzione seriale.Se lo script di chiamata è attualmente in esecuzione in una fase di esecuzione seriale, synchronize restituisce immediatamente e non ha alcun effetto.
Solo gli script che sono discendenti di un Attore possono chiamare questo metodo.Se uno script al di fuori di un Attore chiama questo metodo, verrà sollevata un'errore.ModuleScript può anche chiamare synchronize finché l'istanziamento del modulo che lo chiama era richiesto da uno script che è un discendente di un Attore.
Per maggiori informazioni, vedi Luau parallelo.
Restituzioni
wait
Rende il thread attuale fino a quando la durata indicata (in secondi) non è trascorsa, quindi riprende il thread al prossimo passo Heartbeat .Viene restituita la quantità effettiva di tempo trascorso.
Se non viene specificata alcuna durata, verrà impostata a zero (0).Questo significa che il thread riprende nel passo successivo, che è equivalente in comportamento a RunService.Heartbeat:Wait()
A differenza della global deprecated wait , questa funzione non limita e garantisce il riavvio del thread al primo Heartbeat che si verifica quando è dovuto.Questa funzione restituisce anche solo il tempo trascorso e nient'altro.
Se lo script di chiamata è attualmente in esecuzione in una fase di esecuzione seriale, allora lo script viene ripreso in una fase di esecuzione seriale.Se lo script di chiamata è attualmente in esecuzione in una fase di esecuzione parallela, allora lo script viene ripreso in una fase di esecuzione parallela.Per maggiori informazioni, vedi Luau parallelo.
Parametri
La quantità di tempo in secondi che dovrebbe scadere prima che venga ripreso il thread attuale.
Restituzioni
cancel
Annulla un thread e lo chiude, impedendo che venga ripreso manualmente o dal Agendadi attività.
Questa funzione può essere utilizzata con altri membri della libreria delle attività che restituiscono un thread per annullarli prima che vengano ripresi. Ad esempio:
local thread = task.delay(5, function()
print("Hello world!")
end)
task.cancel(thread)
Nota: i thread possono essere in uno stato in cui non è possibile annullarli.Ad esempio, il thread in esecuzione attualmente e i thread che hanno ripreso un'altra coroutine non possono essere annullati.Se questo è il caso, verrà generato un errore lua.
Tuttavia, il codice non dovrebbe fare affidamento su stati o condizioni di thread specifici che causino il fallimento di task.cancel().È possibile che future aggiornamenti elimineranno queste restrizioni e consentiranno di annullare con successo i thread in questi stati.
Parametri
Il thread che verrà annullato.