Kod planlaması, belirli bir eylem veya döngüden sonra kodun yürütülmesini sağlamak veya belirli bir süre için kodun gecikmesi gibi birçok durumda yararlıdır.Roblox'un görev planlayıcısını yönetmek ve kodu planlamak için task kütüphanesini kullanabilirsiniz.Ayrıca, bazı ek işlevlere sahip kodu planlamak için benzer bir kütüphane olan coroutine kullanabilirsiniz.
Sıradan yöntemler
Aşağıdakiler, kodun planlanması için kullanılan en yaygın task yöntemleridir.Kodunuzun mükemmel çalıştığından emin olmak için miras kalan planlama yöntemleri üzerindeki görev yöntemlerini kullanmalısınız, örneğin wait() .
Aşağıdaki tablo, ilgili miras küresel yöntemleri ve tercih edilen, daha optimize edilmiş karşılıkları listeler:
| Miras küresel yöntemler | Görev yöntemleri | Ek alternatifler | | :-------------------------------------- | :------------------------------------------------- | :------------------------------------------------- | | | | | | | | | | | | | | | | | | | | | | |
görev.spawn
task.spawn() bir iş parçasını alır ve motorun planlayıcısı aracılığıyla hemen yeniden başlatır **** .Ek argümanlar yeniden başlatılan işletme veya işlevin içine geçirilir.
Aşağıdaki kod örneği, bir dizi nesne üzerinde döndürürken task.spawn() kullanabileceğiniz bir işlev çağrarken nasıl kullanılabileceğinin bir örneğidir:
local function playerAdded(player)
...
(yield)
end
for _, player in Players:GetPlayers() do
task.spawn(playerAdded, player)
end
görev.ertelenmiş
task.defer() bir iş parçacığını veya işlevini alır ve bir sonraki yeniden başlatma döngüsünde noktasında motorun planlayıcısıyla yeniden başlatılır.Ek argümanlar iptal edilen işletme veya işlevin yeniden başlatılmasına geçer.
Genellikle benzer davranışı task.spawn() istediğinizde bunu kullanmalısınız, ancak hemen çalışan iş parçasına önem vermiyorsunuz.Aşağıdaki kod örneği, ifadesinin ifadesinden sonra ertelenmesini gösterir: ifadesi çalışana kadar:
task.defer(print, "A")print("B")--> B--> A
görev.延迟
task.delay() bir iş parçacığını veya işlevini alır ve bir sonraki Heartbeat adımda verilen miktar süre sonra yeniden başlatmak için planlar.İp başka motor özellikleri için yerleşik hata ele alma ve destek ile yeniden başlar.Herhangi bir ek argüman iptal edilen işletme veya işlevin devamına geçer.
Gerçek gecikme süresi değişebileceğinden, aşağıdaki kod örneği, mevcut süreyi bir argman olarak geçerek nasıl hesaplayabileceğinizi gösterir:
task.delay(2, function(scheduledTime)
print(os.clock() - scheduledTime) --> 2.038702
end, os.clock())
Sıfır süresi bir sonraki adımda işletme veya işlevin yeniden başlamasına yol açar.
görev.bekle
task.wait() verilen süre (saniyeler) dolana kadar mevcut iş parçasını verir ve ardından bir sonraki Heartbeat adımda iş parçasını yeniden başlatır.
Gerçek verim süresi değişebilir. Aşağıdaki kod örneği, bu yöntemin konfor için nasıl geri döndürüleceğini gösterir:
Gerçek gecikme süresi değişebileceğinden, aşağıdaki kod örneği, yöntemin dönüş değerini depolayarak gerçek süreyi nasıl alabileceğinizi gösterir:
local elapsedTime = task.wait(2) -- 2 saniye bekleyinprint(elapsedTime) --> 2.0792941
Eğer bir süre verilmezse, süre varsayılan olarak sıfıra düşer ve işletim için bir sonraki adıma otomatik olarak devam edilir.Bu, task.wait() davranışında RunService.Heartbeat eşdeğer olduğu anlamına gelir.