Zamanlayıcı Kodu

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Kod planlaması, kodun belli bir eylem veya döngü sonra yürütülmesini sağlamak veya kodu belirli bir süre için geciklemek gibi birçok durumda yararlıdır. task kodunı yönetmek ve planlamasını optimize etmek için <

Sıradan Yöntemler

Aşağıdakiler, kodu planlamak için kullanılan en yaygın task yöntemleridir. İşlem yöntemleri, geleneksel yöntemlerden, örneğin wait() , kodun işlevsel olarak çalışmasını garanti etmek için kullanılmalıdır.

Aşağıdaki tablo, ilgili miras global yöntemlerini ve tercih edilen, daha optimize edilmiş karşılıklarını listeler:

| Miras Global Metodları | Görev Metodları | Ekstra Alternatifler | | : | | wait() | task.wait() | RunService.Heartbeat | 1> spawn(f(uv1,

görev.spawn

task.spawn() bir başlık veya işlev alır ve onu motorun yeniden planlayıcısından derhal yeniden başlatır ile. Ekstra argeler başlık veya işlev alınan başlatıcıyla verilir.

Aşağıdaki kod örneği, bir dizi nesneyi işleyerek while döngüsünde çalıştığınızda bir işlevi nasıl kullanacağınızı gösteriyor:


local function playerAdded(player)
...
(yield)
end
for _, player in Players:GetPlayers() do
task.spawn(playerAdded, player)
end

görev.fert

task.defer() bir başlık veya işlev alır ve önümüzdeki yeniden başlatma döngüsü nerede, motorun planlayıcıyla yeniden başlatılmasıyla sona erer. Ek argeler başlık veya işlev başlatıcına verilir.

Genellikle bunu task.spawn() gibi benzer bir davranış istediğinizde kullanmalısınız, ancak şu anda çalışan threadi önemli değil. Aşağıdaki kod örneği, print() ifadesinin "A" için nasıl gecikmiş olaca


task.defer(print, "A")
print("B")
--> B
--> A

görev.gecikme

task.delay() bir thread veya işlevi alır ve bir sonraki Class.RunService.Heartbeat|Heartbeat adımında yeniden başlatmak için planlanır. İşlemci, verilen süreden sonra için için için için için için için için için için için için için için için için için iç

Gerçek gecikme süresi değişebildiğinden, aşağıdaki kod örneği, mevcut zamanı bir argüman olarak geçerek nasıl hesaplayabileceğinizi gösterir:


task.delay(2, function(scheduledTime)
print(os.clock() - scheduledTime) --> 2.038702
end, os.clock())

Zero'nin bir ömrü, bir sonraki adımda gelen işlem için işlemi devralacaktır.

bekleme.görev

task.wait() şu andaki işlemciyi (saniye olarak) elapsedikten sonra işlemciyi yeniden başlatır ve sonra Heartbeat adımında devam eder.

Aslında toplama süresi değişebilir. Aşağıdaki kod örneği, bu yöntemin便利ğini gösterir:

Aslındaki gecikme süresi değişebildiğinden, aşağıdaki kod örneği, yöntemin dönüş değerini depolayarak gerçek zamanı nasıl alacağınızı gösterir:


local elapsedTime = task.wait(2) -- 2 saniye bekle
print(elapsedTime) --> 2.0792941

Eğer herhangi bir süre verilmezse, süre varsayılır olacaktır ve bu, işlemciyi bir sonraki adımda otomatik olarak yeniden başlatacaktır. Bu, task.wait() ile davranış olarak eşdeğerdir.