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 bir döngü ile birleştirilebilir, örneğin while ve for , aynı kodu her indekslenen değer için tekrarlamak için.Örneğin, her oyuncuyu bir dizeye yeni bir yere ışınlamak veya bir parça dizesinin yanmasını sağlamak.

Döngüler aracılığıyla döngüleri keşfetmek için, parçalar bir dizeye yerleştirildikten sonra birer birer kaybolmak üzere bir kaybolan köprü yolu oluşturun.

Bir dizi boyunca döngü geçme

Proje için, kaybolması için bir dizi üç parça bulun veya oluşturun. Parçaların hepsi sabitlenmelidir.

  1. Üç parça oluşturun. Parçaların kaybolması gereken sırayla adlandırın, Part1, Part2, Part3.

  2. ServerScriptService'te, yeni bir senaryo ekleyin ve parçaları depolamak için bir dizi oluşturun.


    local pathArray = {
    }
  3. Her biri tek bir satırda, kaybolması gereken sırayla parçaların adını yazın. Her bir değer için yeni bir satır kullanmak okumayı kolaylaştırır.


    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3,
    }

Bir dizi ile bir döngü kullanın

Döngüyü kullanarak dizi boyunca gezinin ve parçaların dizi içinde sıralandıkları sırada ne kadar hızlı kaybolacağını kontrol edin.

  1. Bir parçanın kaç saniye içinde kaybolduğunu kontrol etmek için, VANISH_RATE adlı bir değişken oluşturun. Test için, küçük bir sayıda tutmak en iyisidir.


    local VANISH_RATE = 1.5
    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3
    }
  2. takip edilenbir döngü oluşturun: Başlangıç: partIndex = 1 , dizideki ilk değerin indeksi. Sonu: #pathArray , bu dizinin boyutu.


    for partIndex = 1, #pathArray do
    end
  3. Bu nedenle, bir parça kaybolmadan önce, döngüde, task.wait() kullanarak bir VANISH_RATE ekleyin.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    end
  4. Bir parçanın kaybolması için, whichPart adlı yeni bir değişken oluşturun ve onu partsArray[partIndex] ile eşit kılın.Sonra, o bölümü kaybolturmak için, onun CanCollide özelliğini yalan ve Transparency 1'e ayarlayın.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
  5. Yolun bazı bölümlerinin zamanla kaybolduğundan emin olun.

Sorun giderme ipuçları

Köprü kaybolmazsa, aşağıdaki olası sorunları kontrol edin: Sorun: Parçalar çok hızlı kaybolur veya başlathepsi kaybolur.

  • Karakterin deneyime ne kadar hızlı yüklendiğine bağlı olarak, ilk parçalar zaten görünmez olabilir.Bunu ele almak için, senaryonun başında task.wait(2) gibi küçük bir bekleme ekleyin.

İkinci döngüyü kodla

Şu anda, parçalar sonsuza dek kaybolur.Onları yeniden ortaya çıkarmak için, her bir parçayı geçecek bir döngü oluştur ve her parçayı anında yürünebilir hale getir.

  1. İlk döngüden sonra, yol yeniden görünmeden önce kısa bir gecikme oluşturmak için 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. Kendi başına , yolun tekrar kullanılabilir hale gelmesini sağlayan bir döngü için ikinci bir kod yazmayı deneyin ve her parçanın CanCollide özelliğini doğruya ve Transparency'i 0'a değiştirerek.Bitirildiğinde, aşağıdaki koda karşı çalışmanızı kontrol edin.


    -- Tüm parçaları tekrar yürünebilir hale getirerek yolun sıfırlanmasını sağla
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
  3. Tüm parçalar kaybolduktan sonra geri döneceklerini onaylamak için projeyi test edin.

Bir while döngüsü ile tekrarla

Parçalar kaybolur ve yeniden ortaya çıkar, ancak sadece bir kez. Kodun tekrar etmesini sağlamak için tüm kodu bir while döngüsü içine yerleştirin.

  1. Senaryonun en altında, true do döngüsü sırasında yeni bir döngü oluşturun. Ardından, her iki döngü de while döngüsüne taşın .


    while true do
    -- Diziden bir parçayı sırayla kaybolması için yap
    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    -- Yolun yeniden görünmesini sağlamadan önce bir saniye bekle
    task.wait(1)
    -- Tüm parçaları tekrar yürünebilir hale getirerek yolun sıfırlanmasını sağla
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
    end
  2. Tüm parçalar kaybolduktan sonra yeniden ortaya çıktıklarını kontrol edin.

Projenin bitmiş bir sürümü indirilebilir.

Tamamlanmış senaryo

local VANISH_RATE = 1.0
local pathArray = {
workspace.Part1,
workspace.Part2,
workspace.Part3,
}
while true do
-- Diziden bir parçayı sırayla kaybolması için yap
for partIndex = 1, #pathArray do
task.wait(VANISH_RATE)
local whichPart = pathArray[partIndex]
whichPart.CanCollide = false
whichPart.Transparency = 1
end
-- Yolun yeniden görünmesini sağlamadan önce bir saniye bekle
task.wait(1.0)
-- Tüm parçaları tekrar yürünebilir hale getirerek yolun sıfırlanmasını sağla
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
end

Diziler ve ipairs()

ipairs() , düzenekleri ile kullanılır.ipairs() 'deki "i" bir "index" için duruyor. ipairs() birçok nesneye hızlı bir şekilde bir işlemi tekrarlamak için kullanılabilir, örneğin, parçalarla dolu bir klasör.

Bunun, bütün bir parça klasörüne parçacıkları hızlı bir şekilde ekleyerek gösterilecektir.

  1. Çalışma Alanında, Parçalar Klasörü adlı bir klasör oluşturun. İstediğiniz kadar parça ekleyin.

  2. ServerScriptService'te, yeni bir senaryo oluştur ve klasörü referansla.

  3. GetChildren()'u kullanarak klasördeki tüm nesneleri otomatik olarak listeleyen bir dizi alın.


    local partsFolder = workspace.PartsFolder
    -- PartsFolder'daki parçaları listeleyen bir dizi alır
    local partsArray = partsFolder:GetChildren()
  4. PartsArray'den geçmek ve parçacıklar eklemek için in ipairs(ArrayToUse) döngüsü kullanın ve parçacıkları ekleyin.

    Tamamlanmış senaryo

    -- PartsFolder'daki parçaları listeleyen bir dizi alır
    local partsArray = partsFolder:GetChildren()
    -- Dizideki her parçaya parçacıklar ekler
    for index, part in ipairs(partsArray) do
    local particles = Instance.new("ParticleEmitter")
    particles.Parent = part
    end

Oyun testi yapın ve katılımcıların klasördeki her bir parçadan yükseldiğini izleyin.

Özet

Döngüler, herhangi bir değer sayısıyla çalışmak için arraylerle birleştirilebilir ve hızlı bir şekilde çalışır.Birkaç parçaya ve hangi sırayla olduğuna ilişkin kesin kontrol sahibi olmak istiyorsanız, bir dizi belirli değerlerle kodlanmalıdır.

Siparişin önemli olmadığı birçok parçada çalışmak için, GetChildren() bir nesnenin çocuklarının bir dizi oluşturabilir.ipairs() kullanarak, liste, dizi boyutunu bilmeden hızlı bir şekilde döngülenebilir.