Diziler, her bir indeksli değer için aynı kodu tekrarlamak amacıyla while ve for gibi döngülerle birleştirilebilir. Örneğin, bir dizideki her oyuncuyu yeni bir yere teleport etmek veya bir parça dizisinin ateş almasını sağlamak.
Dizilerde döngü yapmayı keşfetmek için, parçaların bir diziye yerleştirildiği ve ardından birer birer kaybolduğu bir kaybolan köprü yolu oluşturun.
Bir dizide döngü yapma
Proje için, kaybolması gereken üç parçadan oluşan bir set bulun veya oluşturun. Parçaların hepsi sabitlenmiş olmalıdır.
Üç parça oluşturun. Parçaları kaybolma sırasına göre adlandırın: Parça1, Parça2, Parça3.
ServerScriptService içinde yeni bir script ekleyin ve parçaları saklamak için bir dizi oluşturun.
local pathArray = {}Her bir parçanın adını kaybolma sırasına göre tek bir satıra yazın. Her değer için yeni bir satır kullanmak okunabilirliği artırır.
local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}
Bir dizi ile for döngüsü kullanma
Diziyi gezmek ve parçaların dizideki indeks sırasına göre ne kadar hızlı kaybolacağını kontrol etmek için bir for döngüsü kullanın.
Bir parçanın kaç saniyede kaybolacağını kontrol etmek için VANISH_RATE adında bir değişken oluşturun. Test için, bunu küçük bir sayı olarak tutmak en iyisidir.
local VANISH_RATE = 1.5local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3}Aşağıdaki gibi bir for döngüsü oluşturun: Başlangıç: partIndex = 1, dizideki ilk değerin indeksi. Bitiş: #pathArray, o dizinin boyutu.
for partIndex = 1, #pathArray doendBir parçanın kaybolmadan önce bir gecikme olması için döngüde task.wait() ekleyin ve VANISH_RATE kullanın.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)endBir parçanın kaybolmasını sağlamak için whichPart adında yeni bir değişken oluşturun ve onu partsArray[partIndex] ile eşitleyin. Ardından, o parçayı kaybolması için CanCollide özelliğini false ve Transparency değerini 1 olarak ayarlayın.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endParçaların zamanla kaybolduğunu kontrol edin.
Sorun Giderme ipuçları
Eğer köprü kaybolmuyorsa, aşağıdaki olası sorunları kontrol edin:
Sorun: Parçalar çok hızlı kayboluyor veya hepsi baştan kaybolmuş durumda.
- Karakterinizin oyuna ne kadar hızlı yüklendiğine bağlı olarak, ilk parçalar zaten görünmez olabilir. Bunu düzeltmek için, scriptin başında task.wait(2) gibi küçük bir bekleme ekleyin.
İkinci döngüyü kodlayın
Şu anda, parçalar sonsuza kadar kayboluyor. Onların yeniden görünmesini sağlamak için, her parçayı anında yürünebilir hale getirecek ikinci bir for döngüsü oluşturun.
İlk döngüden sonra, yolun yeniden görünmesi için kısa bir gecikme oluşturmak amacıyla bir task.wait() ekleyin.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endtask.wait(1)Kendi başınıza, yolun yeniden kullanılabilir hale gelmesi için her parçanın CanCollide özelliğini true ve Transparency değerini 0 olarak değiştiren ikinci bir for döngüsü kodlamayı deneyin. İşiniz bittiğinde, kodunuzu aşağıdaki ile karşılaştırın.
-- Yolu sıfırlamak için tüm parçaları yeniden yürünebilir hale getirinfor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endProjeyi test edin ve tüm parçalar kaybolduğunda geri geldiklerini doğrulayın.
While döngüsü ile tekrarlama
Parçalar kayboluyor ve yeniden görünüyor, ancak sadece bir kez. Kodun sürekli tekrar etmesini sağlamak için, tüm kodu bir while döngüsü içine yerleştirin.
Scriptin en altına yeni bir while true do döngüsü oluşturun. Ardından, her iki for döngüsünü while döngüsüne taşıyın.
while true do-- Diziden sırayla bir parçayı kaybolmasını sağlafor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Yolun yeniden görünmesi için bir saniye bekletask.wait(1)-- Yolu sıfırlamak için tüm parçaları yeniden yürünebilir hale getirinfor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endendTüm parçalar kaybolduğunda, yeniden göründüklerini kontrol edin.
Projenin tamamlanmış bir versiyonu indirilebilir.
local VANISH_RATE = 1.0
local pathArray = {
workspace.Part1,
workspace.Part2,
workspace.Part3,
}
while true do
-- Diziden sırayla bir parçayı kaybolmasını sağla
for partIndex = 1, #pathArray do
task.wait(VANISH_RATE)
local whichPart = pathArray[partIndex]
whichPart.CanCollide = false
whichPart.Transparency = 1
end
-- Yolun yeniden görünmesi için bir saniye bekle
task.wait(1.0)
-- Yolu sıfırlamak için tüm parçaları yeniden yürünebilir hale getirin
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
endDiziler ve ipairs()
ipairs() dizilerle kullanılır. ipairs() içindeki "i", "indeks" anlamına gelir. ipairs(), bir dizi dolusu nesne üzerinde hızlı bir şekilde bir işlemi tekrarlamak için kullanılabilir, örneğin, bir parça klasörü.
Bu, bir parça klasörüne hızlı bir şekilde parçacık ekleyerek gösterilecektir.
Workspace içinde, PartsFolder adında bir klasör oluşturun. İstediğiniz kadar parça ekleyin.
ServerScriptService içinde yeni bir script oluşturun ve klasörü referans alın.
GetChildren() kullanarak, klasördeki tüm nesnelerin bir dizi listesini otomatik olarak alın.
local partsFolder = workspace.PartsFolder-- PartsFolder'daki parçaların bir dizi listesini alırlocal partsArray = partsFolder:GetChildren()Parçacıkları eklemek için for döngüsünde in ipairs(ArrayToUse) kullanarak partsArray'i geçin.
Tamamlanmış script-- PartsFolder'daki parçaların bir dizi listesini alırlocal partsArray = partsFolder:GetChildren()-- Dizideki her parçaya parçacık eklerfor index, part in ipairs(partsArray) dolocal particles = Instance.new("ParticleEmitter")particles.Parent = partend
Oyun test edin ve klasördeki her parçadan parçacıkların yükseldiğini izleyin.
Özet
Döngüler, dizilerle birden fazla değerle hızlı bir şekilde çalışmak için birleştirilebilir. Eğer birkaç parçanın ne olacağını ve hangi sırayla olacağını tam olarak kontrol etmek istiyorsanız, bir dizi belirli değerlerle kodlanmalıdır.
Sıralamanın önemli olmadığı birçok parça ile çalışmak için GetChildren() bir nesnenin çocuklarının bir dizisini oluşturabilir. ipairs() kullanarak, liste hızlı bir şekilde dizinin boyutunu bilmeden yineleyebilir.