Modül kodlarına giriş

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

Projeler karmaşık hale geldikçe, senaryoların nasıl organize edildiğini düşünmek önemli hale geliyor.İyi organizasyon pratikleri, kodun kodlar arasında yinelenmediğinden veya yönetilmesi zor olduğundan emin olabilir.

Kodu düzenlemek ve yeniden kullanmak için daha iyi bir yol, modül kodları ile birlikte, paylaşılan bir amaçla karşılaşmak üzere tasarlanmış bir dizi işlev ve değişken saklayan benzersiz bir senaryo türüdür, oyuncu para veya düşmanlarını yönetmek gibi.Modül kılavuzlarındaki kod diğer kılavuzlar tarafından kullanılabilir.Bu şekilde, bir oyuncu bir görevi bitirdiğinde veya bir toplama bulduğunda çeşitli farklı senaryolardan gelen aynı işlevi çağırabilirsiniz.

Yaygın olarak kullanılan kodu modül kriptlerine depolayarak, değişikliklerin yalnızca bir modül kriptine yapılması gerektiğine göre kodun bakımını ve düzenlenmesini kolaylaştırır, çok sayıda kript güncellemek yerine.

Modül kodu temelleri

Modül kodları aslında senaryo nesnelerine kıyasla kendi ayrı nesneleridir.Roblox'ta, modül kodları bir mor simge ile işaretlenebilir.

Modül kodu oluştur

ModülScriptları, sunucu tarafındaki kriptler ve yerel kullanıcı tarafındaki yerel kriptler tarafından kullanıldığında SunucuScriptService ve Yeniden Yazılan Depolama kullanılarak yaygın olarak yerleştirilir (örneğin, GUI etkileşimleri).

  1. Create a ModülScript in SunucuScriptServisi .

Modül kodlarının yapısı

Oluşturulduğunda, her modül kodu aşağıdaki kodla başlar:


local Module = {}
return Module

local Module = {} çizgisi, modülün paylaşılan işlevlerinin ve değişkenlerinin saklanabileceği bir tablo veya kod konteyneri oluşturur.Bu tablo, modülün amacına göre yeniden adlandırılmalıdır, örneğin RewardManager veya ParticleController.Kamel vakasındaki diğer değişkenlere karşın, modül tabloları pascal vakasını kullanmak ve başlıkları büyük harflerle başlatmak için önerilir ( ).


local RewardManager = {}
return RewardManager

Bu nedenle diğer kodlar bir modülün yerel olmayan işlevlerini veya değişkenlerini kullanabilir, her modül return ile bitirilir MyModule .Herhangi bir başka senaryo modülden kod almaya çalıştığında, bu kodun modül tablosuna depolanan erişim kodunu geri verir.

Modül kodlarına ekleyin

Başka bir senaryoda kullanılabilecek bir modüle bir işlev veya değişken eklemek için, modül tablosunun adını, bir nokta ve işlevin veya değişkenin adını yazın, örneğin TestModule.myVariable .Nokta işlecisini kullanmak, modül tablosuna kod eklemek için başka bir yoldur ve diğer kodlara modül tablosuna herhangi bir zamanda erişmesine izin verir.


local TestModule = {}
-- TestModule tablosuna bir değişken ekler
TestModule.myVariable = 100
-- TestModule tablosuna bir işlev ekler
function TestModule.doTask(player)
-- Doldurucu kod
end
return TestModule

Modül kılavuzlarında sınırlandırma

Dış bir senaryoda kullanılacak bir modül işlevi veya değişken için, kullanmayın local .

Değişkenlerin ve işlevlerin önünde yazmak, bu kod tarafından yalnızca kullanılabilir olduklarını gösterir.Bu, hataları azaltmak ve sorun gidermek için çoğu kod için iyi bir uygulama olsa da, modül kodu işlevlerini ve değişkenlerini yerel hale getiremezsiniz.

Bu modül kripti tarafından kullanılan herhangi bir kod sadece tarafından kullanılmalıdır ve hala local.durum, aşağıdaki kod yalnızca bu modül kılavuzunda kullanılabilecek yerel değişken difficultyModifier ve modül dışındaki kılavuzlarda kullanılabilecek fonksiyon getCoinReward() içerir.


local RewardManager = {}
-- Modül kodunda yalnızca kullanılabilir
local rewardCoins = 50
-- Modül kodunda yalnızca kullanılabilir
local difficultyModifier = {
easy = 0.5,
normal = 1,
hard = 2
}
-- Diğer kodlarda kullanılabilir
function RewardManager.getCoinReward(difficulty)
local coins = difficultyModifier[difficulty] * rewardCoins
return coins
end
return RewardManager

Diğer senaryolarda modüller kullanın

Kendi başına, bir modül kodu çalıştırılamaz - anahtar kelime require() kullanarak başka bir senaryoda yüklenmesi gerekir.Fonksiyon require() bir argüman kabul eder, Modül kılavuzunun yerini Explorer'da.

Bir modülü kullanmak için, ayrı bir senaryoda, require(moduleScript) eşit bir değer belirleyin.


local MyModule = require(ServerStorage.ModuleScript)

Şimdi, değişken MyModule o modül senaryosunda oluşturulan modül tablosunu içeriyor.Bu tablodaki işlevleri ve değişkenleri kullanmak için, değişken adını yazın, ardından bir nokta ve bu modül senaryosunda kullanılacak öğenin aynı adını yazın, örneğin MyModule.myFunction().Senaryo çalıştırıldığında ve bu satıra ulaştığında, modül tablosundaki belirli işlev veya değişkenlere erişecektir.


local MyModule = require(ServerStorage.ModuleScript)
MyModule.myFunction()

ÖdülYöneticisi örneği

ModülScript - ÖdülYöneticisi

local RewardManager = {}
-- Modül kodunda yalnızca kullanılabilir
local rewardCoins = 50
-- Modül kodunda yalnızca kullanılabilir
local difficultyModifier = {
easy = 0.5,
normal = 1,
hard = 2
}
-- Diğer kodlarda kullanılabilir
function RewardManager.getCoinReward(difficulty)
local coins = difficultyModifier[difficulty] * rewardCoins
return coins
end
return RewardManager
Script - Hazine Sandığı Kodu

local ServerStorage = game:GetService("ServerStorage")
-- Modül senaryosunu yükle
local RewardManager = require(ServerStorage.RewardManager)
--Modül kodundan işlev çağrısı
local coins = RewardManager.getCoinReward("easy")
print("Should award " .. coins .. " coins")

Genel sorun giderme

Buradaki ipuçların bazıları, modül kodlarıyla çalışırken ortak sorunlara değinir.Modül kodlarının daha karmaşık bir konu olabileceğini unutmayın, ancak daha fazla ayrıntı içerebilir.Daha fazla ayrıntı için, Modül Kodları üzerine bu daha teknik rehberi görün. Sorun: Hata içeren bir hata mesajı alın: "Infinite yield possible" veya "not a valid member".

  • Yüklendiği modül kriptinin yazımını kontrol edin.require() modül kodunun doğru yolunu ve yazımını içermelidir, ki bu modül tablosundan farklı adlandırılabilir. Sorun: Hata içeren bir hata mesajı alın: "attempt to index global" .

  • Bir modül kripti kullanan herhangi bir kriptte, fonksiyon require() kullanarak yüklendiğinden emin olun.Değilse, bu kod modül kriptinden işlevleri ve değişkenleri kullanamaz.

Özet

Roblox'taki modül kodları kodları, kodu düzenlemek ve yeniden kullanmak için kullanılan bir yöntem kodlayıcıdır.Bir modül kodu genellikle ServerStorage'da (veya müşteri tabanlı etkileşimler için ReplicatedStorage) saklanır.Oradan, diğer kodlar o modül kriptinde saklanan işlevleri ve değişkenleri çağırabilir.

durum, bir oyun, nesneleri toplamak için oyunculara puan verebilir.Bir modül kodu, puan vermek için kodu ele alabilir.Sonra, farklı türdeki nesneler için kodlar sadece modül kript fonksiyonunu çağırabilir.Bu, kodu yeniden kullanma ihtiyacını azaltır, kodu anlamak ve korumak daha kolay hale getirir.