Diziler, her 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 teleporte etmek veya bir dizi parçanın ateş almasını sağlamak.
Diziler üzerinden döngü kurmayı keşfetmek için, parçaların bir diziye yerleştirildiği ve birer birer kaybolduğu kaybolan bir köprü yolu oluşturun.
Dizinin üzerinden döngü geçme
Proje için kaybolmasını sağlamak amacıyla üç parçanın bir setini bulun veya oluşturun. Tüm parçaların sabitlenmiş olması gerekir.
Üç parça oluşturun. Parçaları kaybolma sırasına göre Part1, Part2, Part3 olarak adlandırın.
ServerScriptService'de yeni bir script ekleyin ve parçaları saklamak için bir dizi oluşturun.
local pathArray = {}Her parçanın adını, kaybolma sırasına göre tek bir satıra yazarak belirleyin. Her değer için yeni bir satır kullanmak okunabilirliği artırır.
local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}
Dizi ile for döngüsü kullanma
Dizi üzerinden geçmek ve parçaların dizide hangi sırayla 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 amaçlı, onu küçük bir sayıda tutmak en iyisidir.
local VANISH_RATE = 1.5local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3}Aşağıdakileri kullanarak bir for döngüsü oluşturun: Başlangıç: partIndex = 1, dizideki ilk değerin indeksi. Bitiş: #pathArray, dizinin boyutu.
for partIndex = 1, #pathArray doendBir parçanın kaybolması için gecikme olması adına, döngüde task.wait() kullanarak VANISH_RATE değerini ekleyin.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)endBir parçayı kaybetmek için whichPart adında yeni bir değişken oluşturun ve onu pathArray[partIndex] ile eşitleyin. Sonrasında, o parçanın 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 = 1endYol parçalarını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 baştan hepsi kaybolmuş durumda.
- Karakterinizin deneyime ne kadar hızlı yükleneceğine bağlı olarak, ilk parçalar zaten görünmez olabilir. Bunu çözmek için, scriptin başında küçük bir bekleme süresi ekleyin, örneğin task.wait(2).
İkinci döngüyü kodlayın
Şu anda parçalar sonsuza dek kayboluyor. Onların tekrar görünmesi için, her bir parçayı anında yürünebilir hale getirecek ikinci bir döngü oluşturun.
İlk döngüden sonra, yolun yeniden görünmesi için kısa bir gecikme oluşturacak bir task.wait() ekleyin.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endtask.wait(1)Kendiniz deneyin, yolun yeniden kullanılabilir hale gelmesi için her bir parçanın CanCollide özelliğini true ve Transparency değerini 0 olarak değiştirerek ikinci bir for döngüsü kodlamaya çalışın. İşlemi tamamladıktan sonra aşağıdaki kodla karşılaştırın.
-- Yolu sıfırlayarak tüm parçaları tekrar yürünebilir hale getirfor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endProjeyi test edin ve tüm parçalar kaybolduktan sonra geri geldiklerini doğrulayın.
While döngüsü ile tekrarla
Parçalar kayboluyor ve geri geliyor, ancak sadece bir kez. Kodun sürekli tekrarlanmasını 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ü de while döngüsüne taşıyın.
while true do-- Diziden sırayla bir parçayı kaybetfor 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 bekleyintask.wait(1)-- Yolu sıfırlayarak tüm parçaları tekrar yürünebilir hale getirinfor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endendTüm parçalar kaybolduğunda geri geldiklerini kontrol edin.
Tamamlanmış bir proje versiyonu indirilebilir.
Tamamlanmış scriptlocal VANISH_RATE = 1.0local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}while true do-- Diziden sırayla bir parçayı kaybetfor 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 bekleyintask.wait(1.0)-- Yolu sıfırlayarak tüm parçaları tekrar yürünebilir hale getirinfor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endend
Diziler ve ipairs()
ipairs() diziler ile kullanılır. ipairs() içindeki "i", "indeks" anlamına gelir. ipairs(), bir dizi dolusu nesne üzerinde hızlı bir şekilde bir işlemi tekrar etmek için kullanılabilir, örneğin, bir dizi dolusu parçanın olduğu bir klasör üzerindeki gibi.
Bu, hızlı bir şekilde bir klasördeki tüm parçalara parçacık ekleyerek gösterilecektir.
Workspace'te, PartsFolder adında bir klasör oluşturun. İstediğiniz kadar parça ekleyin.
ServerScriptService'de yeni bir script oluşturun ve klasöre referans verin.
GetChildren() kullanarak klasördeki tüm nesnelerin bir dizi listesini otomatik olarak alın.
local partsFolder = workspace.PartsFolder-- PartsFolder içindeki parçaların bir dizi listesini alırlocal partsArray = partsFolder:GetChildren()Particles eklemek için for döngüsü ile in ipairs(ArrayToUse) kullanın.
Tamamlanmış script-- PartsFolder içindeki 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
Oynatın ve klasördeki her parçadan parçacıkların yukarı doğru süzüldüğünü izleyin.
Özet
Döngüler, herhangi bir sayıda değerle hızlı bir şekilde çalışmak için dizilerle birleştirilebilir. Birkaç parçanın başına ne geleceği ve hangi sırayla olacağı hakkında tam kontrol sahibi olmak istiyorsanız, diziyi belirli değerlerle sabit kodlamanız gerekir.
Sıra önemli değilse, çok sayıda parça ile çalışmak için GetChildren() bir nesnenin çocuklarının bir dizisini oluşturabilir. ipairs() kullanarak, liste hızla dizinin boyutunu bilmeden yineleyebilir.