Modül betikleri hakkında 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şıklaştıkça, betiklerin nasıl düzenlendiğini düşünmek önem kazanır. İyi düzenleme uygulamaları, kodun betikler arasında kopyalanmamasını veya yönetilmesinin zorlaşmamasını sağlayabilir.

Kodu düzenlemenin ve yeniden kullanmanın daha iyi bir yolu, modül betikleri kullanmaktır; bu, paylaşılmış bir amaca ulaşmak üzere tasarlanmış bir dizi fonksiyon ve değişkeni depolayan benzersiz bir betik türüdür, örneğin oyuncu parasını veya düşmanları yönetmek. Modül betiklerindeki kod diğer betikler tarafından kullanılabilir. Bu şekilde, bir oyuncu bir görevi tamamladığında ya da bir eşya bulduğunda, farklı betiklerden aynı madeni para veren fonksiyonu çağırabilirsiniz.

Sıkça kullanılan kodu modül betiklerinde depolamak, kodu bakımını ve düzenlemesini kolaylaştırır; çünkü değişikliklerin yalnızca bir modül betiğinde yapılması gerekir, çoklu betiklerin güncellenmesi yerine.

Modül betiklerinin temelleri

Modül betikleri, betik nesnelerine kıyasla aslında kendi ayrı nesneleridir. Roblox'ta, modül betikleri mor bir ikon ile gösterilebilir.

Modül betiği oluşturma

Modül Betikleri genellikle ServerScriptService içinde sunucu tarafı betikleri tarafından kullanıldığında ve ReplicatedStorage içinde istemci tarafı yerel betikler (GUI etkileşimleri gibi) tarafından kullanıldığında yerleştirilir.

  1. ServerScriptService içinde bir ModuleScript oluşturun.

Modül betiklerinin yapısı

Oluşturulduğunda, her modül betiği aşağıdaki kod ile başlar:


local Module = {}
return Module

local Module = {} satırı, modülün paylaşılan fonksiyon ve değişkenlerinin depolanabileceğ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. Diğer değişkenlerin camel case (örneğin myVariable) olarak adlandırılmasının aksine, modül tablolarının pascal case ve büyük harfle başlaması önerilir (MyModule).


local RewardManager = {}
return RewardManager

Diğer betiklerin bir modülün yerel olmayan fonksiyon veya değişkenlerini kullanabilmesi için, her modül return MyModule ile sona erer. Diğer bir betik modülden kod almaya çalıştığında, return bu betiğin modül tablosunda depolanan koda erişmesine izin verir.

Modül betiklerine ekleme yapma

Bir başka betikte kullanılabilecek bir fonksiyon veya değişkeni modüle eklemek için, modül tablosunun adını yazıp ardından bir nokta ve ardından fonksiyon veya değişken adını yazmalısınız; örneğin TestModule.myVariable. Nokta operatörünü kullanmak, bir tabloya kod eklemenin başka bir yoludur ve diğer betiklerin bu kodu modül tablosu döndürüldüğünde erişmesini sağlar.


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

Modül betiklerinde kapsam

Bir modül fonksiyonu veya değişkeninin dışarıdaki bir betikte kullanılabilmesi için, local yazmayın.

Değişkenlerin ve fonksiyonların önüne local yazmak, onların yalnızca o betik tarafından kullanılabilir olduğu anlamına gelir. Bu, hataları ve sorun gidermeyi azaltmak için çoğu betik için iyi bir uygulama olmasına rağmen, modül betiklerinin fonksiyonları ve değişkenlerini yerel hale getiremezsiniz.

Yalnızca o modül betiği tarafından kullanılan herhangi bir kod hâlâ local içermelidir. Örneğin, aşağıdaki kodda yalnızca o modül betiğinde kullanılabilecek yerel değişken olan difficultyModifier yer alırken, dış betiklerde kullanılabilecek olan getCoinReward() fonksiyonu bulunmaktadır.


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

Modülleri diğer betiklerde kullanma

Kendiliğinden, bir modül betiği kod çalıştıramaz — başka bir betikte require() anahtar kelimesi kullanılarak yüklenmesi gerekir. require() fonksiyonu bir argüman alır, bu da Explorer'daki modül betiğinin konumudur.

Bir modülü kullanmak için, ayrı bir betikte bir değişkeni require(moduleScript) olarak ayarlayın.


local MyModule = require(ServerStorage.ModuleScript)

Artık MyModule değişkeni, o modül betiğinde oluşturulan modül tablosunu içermektedir. O tablodan fonksiyonları ve değişkenleri kullanmak için, değişken adını yazın, ardından bir nokta ve o modül betiğinde kullanmak istediğiniz şeyin tam adını yazın; örneğin MyModule.myFunction(). Betik çalıştığında ve o satıra ulaştığında, o modül tablosunda depolanan belirli fonksiyonu veya değişkeni erişecektir.


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

RewardManager örneği

Modül Betiği - RewardManager

local RewardManager = {}
-- Yalnızca modül betiğinde kullanılabilir
local rewardCoins = 50
-- Yalnızca modül betiğinde kullanılabilir
local difficultyModifier = {
easy = 0.5,
normal = 1,
hard = 2
}
-- Diğer betiklerde kullanılabilir
function RewardManager.getCoinReward(difficulty)
local coins = difficultyModifier[difficulty] * rewardCoins
return coins
end
return RewardManager
Betik - TreasureChestScript

local ServerStorage = game:GetService("ServerStorage")
-- Modül betiğini yükle
local RewardManager = require(ServerStorage.RewardManager)
-- Modül betiğinden fonksiyonu çağır
local coins = RewardManager.getCoinReward("easy")
print("Ödüllendirilmesi gereken " .. coins .. " madeni para")

Genel sorun giderme

Buradaki bazı ipuçları, modül betikleriyle çalışırken yaygın sorunları ele alır. Modül betiklerinin karmaşık bir konu olduğunu ve daha fazla ince ayrıntıya sahip olabileceğini unutmayın. Daha fazla ayrıntı için, bu daha teknik kılavuzu inceleyin: Modül Betikleri.

Sorun: "Sonsuz bekleme mümkün" veya "geçerli bir üye değil" içeren bir hata mesajı alıyorsunuz.

  • Yüklenen modül betiğinin yazımını kontrol edin. require() fonksiyonu, modül betiğinin tam yolu ve yazımını içermelidir; bu, modül tablosundan farklı adlandırılmış olabilir.

Sorun: "global'ı dizmeye çalışma" içeren bir hata mesajı alıyorsunuz.

  • Modül betiğini kullanan herhangi bir betikte, require() fonksiyonu kullanılarak yüklendiğinden emin olun. Aksi takdirde, o betik modül betiğinden fonksiyonları ve değişkenleri kullanamaz.

Özet

Roblox'taki modül betikleri, kodları düzenlemek ve yeniden kullanmak için geliştiricilerin kullandığı bir yöntemdir. Bir modül betiği genellikle ServerStorage'da (veya istemci tabanlı etkileşimler için ReplicatedStorage'da) saklanır. Oradan, diğer betikler o modül betiğinde depolanan fonksiyonları ve değişkenleri çağırabilir.

Örneğin, bir deneyim oyunculara nesneleri topladıkları için puan verebilir. Bir modül betiği, puan vermek için kodu yönetebilir. Sonra, farklı türde nesneler için betikler yalnızca modül betiği fonksiyonunu çağırabilir. Bu, betikler arasında kodun yeniden kullanılmasına olan ihtiyacı azaltır ve kodun daha anlaşılır ve bakımı kolay hale gelmesini sağlar.

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