Döngüler ve diziler

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

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.

  1. Üç parça oluşturun. Parçaları kaybolma sırasına göre Part1, Part2, Part3 olarak adlandırın.

  2. ServerScriptService'de yeni bir script ekleyin ve parçaları saklamak için bir dizi oluşturun.


    local pathArray = {
    }
  3. 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.

  1. 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.5
    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3
    }
  2. 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 do
    end
  3. Bir 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 do
    task.wait(VANISH_RATE)
    end
  4. Bir 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 do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
  5. Yol 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.

  1. İ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 do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    task.wait(1)
  2. 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 getir
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
  3. Projeyi 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.

  1. 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ı kaybet
    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 bekleyin
    task.wait(1)
    -- Yolu sıfırlayarak tüm parçaları tekrar yürünebilir hale getirin
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
    end
  2. Tüm parçalar kaybolduğunda geri geldiklerini kontrol edin.

Tamamlanmış bir proje versiyonu indirilebilir.

Tamamlanmış script

local VANISH_RATE = 1.0
local pathArray = {
workspace.Part1,
workspace.Part2,
workspace.Part3,
}
while true do
-- Diziden sırayla bir parçayı kaybet
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 bekleyin
task.wait(1.0)
-- Yolu sıfırlayarak tüm parçaları tekrar yürünebilir hale getirin
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
end

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.

  1. Workspace'te, PartsFolder adında bir klasör oluşturun. İstediğiniz kadar parça ekleyin.

  2. ServerScriptService'de yeni bir script oluşturun ve klasöre referans verin.

  3. 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ır
    local partsArray = partsFolder:GetChildren()
  4. 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ır
    local partsArray = partsFolder:GetChildren()
    -- Dizideki her parçaya parçacık ekler
    for index, part in ipairs(partsArray) do
    local particles = Instance.new("ParticleEmitter")
    particles.Parent = part
    end

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.

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.