Pengenalan ke skrip modul

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Seiring proyek menjadi kompleks, penting untuk memikirkan bagaimana skrip diorganisir. Praktik organisasi yang baik dapat memastikan kode tidak diduplikasi antara skrip, atau menjadi sulit untuk dikelola.

Cara yang lebih baik untuk mengorganisir dan menggunakan kembali kode adalah dengan skrip modul, jenis skrip unik yang menyimpan sekumpulan fungsi dan variabel yang dirancang untuk memenuhi tujuan bersama, seperti mengelola uang pemain atau musuh. Kode dalam skrip modul dapat digunakan oleh skrip lain. Dengan cara itu, Anda dapat memanggil fungsi yang sama yang memberikan koin dari beberapa skrip yang berbeda setiap kali pemain menyelesaikan misi atau menemukan item.

Dengan menyimpan kode yang sering digunakan dalam skrip modul, ini membuat pemeliharaan dan pengorganisasian kode lebih mudah karena perubahan hanya perlu dilakukan pada satu skrip modul, daripada memperbarui beberapa skrip.

Dasar-dasar skrip modul

Skrip modul sebenarnya adalah objek terpisah dibandingkan dengan objek skrip. Di Roblox, skrip modul dapat ditandai dengan ikon ungu.

Membuat skrip modul

Skrip Modul biasanya ditempatkan di ServerScriptService ketika digunakan oleh skrip sisi server dan ReplicatedStorage ketika digunakan oleh skrip lokal sisi klien (seperti interaksi GUI).

  1. Buat ModuleScript di ServerScriptService.

Struktur skrip modul

Ketika dibuat, setiap skrip modul dimulai dengan kode di bawah ini:

local Module = {}
return Module

Baris local Module = {} membuat tabel, atau wadah kode, di mana fungsi dan variabel bersama modul dapat disimpan. Tabel ini harus dinamai sesuai dengan tujuan modul, seperti RewardManager atau ParticleController. Berbeda dengan variabel lain yang menggunakan camel case (myVariable), tabel modul disarankan untuk menggunakan pascal case dan dimulai dengan huruf kapital (MyModule).

local RewardManager = {}
return RewardManager

Agar skrip lain dapat menggunakan fungsi atau variabel non-lokal dari modul, setiap modul diakhiri dengan return MyModule. Setiap kali skrip lain mencoba mendapatkan kode dari modul, return memungkinkan skrip tersebut mengakses kode yang disimpan di dalam tabel modul.

Menambahkan ke skrip modul

Untuk menambahkan fungsi atau variabel ke modul yang dapat digunakan di skrip lain, ketik nama tabel modul, diikuti dengan titik, dan nama fungsi atau variabel, seperti di TestModule.myVariable. Menggunakan operator titik adalah cara lain untuk menambahkan kode ke dalam tabel, memungkinkan skrip lain mengakses kode tersebut setiap kali tabel modul dikembalikan.

local TestModule = {}
-- Menambahkan variabel ke tabel 'TestModule'
TestModule.myVariable = 100
-- Menambahkan fungsi ke tabel 'TestModule'
function TestModule.doTask(player)
-- Kode placeholder
end
return TestModule

Lingkup dalam skrip modul

Agar fungsi atau variabel modul dapat digunakan di skrip luar, jangan ketik local.

Mengetik local di depan variabel dan fungsi berarti mereka hanya dapat digunakan oleh skrip tersebut. Meskipun ini adalah praktik yang baik untuk sebagian besar skrip untuk mengurangi kesalahan dan pemecahan masalah, Anda tidak dapat membuat fungsi dan variabel skrip modul menjadi lokal.

Setiap kode yang digunakan hanya oleh skrip modul tersebut tetap harus menyertakan local. Misalnya, kode di bawah ini menyertakan variabel lokal difficultyModifier, yang hanya dapat digunakan di skrip modul tersebut, dan fungsi getCoinReward(), yang dapat digunakan di skrip di luar modul.

local RewardManager = {}
-- Hanya dapat digunakan di skrip modul
local rewardCoins = 50
-- Hanya dapat digunakan di skrip modul
local difficultyModifier = {
easy = 0.5,
normal = 1,
hard = 2
}
-- Dapat digunakan di skrip lain
function RewardManager.getCoinReward(difficulty)
local coins = difficultyModifier[difficulty] * rewardCoins
return coins
end
return RewardManager

Menggunakan modul di skrip lain

Dengan sendirinya, skrip modul tidak dapat menjalankan kode — ia perlu dimuat di skrip lain menggunakan kata kunci require(). Fungsi require() menerima satu argumen, lokasi skrip modul di Explorer.

Untuk menggunakan modul, di skrip terpisah, atur variabel sama dengan require(moduleScript).

local MyModule = require(ServerStorage.ModuleScript)

Sekarang, variabel MyModule berisi tabel modul yang dibuat di skrip modul tersebut. Untuk menggunakan fungsi dan variabel dari tabel tersebut, ketik nama variabel, diikuti dengan titik, dan nama persis dari apa yang akan digunakan di skrip modul tersebut, seperti MyModule.myFunction(). Ketika skrip dijalankan dan mencapai baris itu, ia akan mengakses fungsi atau variabel spesifik yang disimpan di tabel modul.

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

Contoh RewardManager

ModuleScript - RewardManager
local RewardManager = {}
-- Hanya dapat digunakan di skrip modul
local rewardCoins = 50
-- Hanya dapat digunakan di skrip modul
local difficultyModifier = {
easy = 0.5,
normal = 1,
hard = 2
}
-- Dapat digunakan di skrip lain
function RewardManager.getCoinReward(difficulty)
local coins = difficultyModifier[difficulty] * rewardCoins
return coins
end
return RewardManager
Script - TreasureChestScript
local ServerStorage = game:GetService("ServerStorage")
-- Memuat skrip modul
local RewardManager = require(ServerStorage.RewardManager)
-- Memanggil fungsi dari skrip modul
local coins = RewardManager.getCoinReward("easy")
print("Seharusnya memberikan " .. coins .. " koin")

Pemecahan masalah umum

Beberapa tips di sini mengatasi masalah umum saat bekerja dengan skrip modul. Ingatlah bahwa skrip modul bisa menjadi topik yang rumit dengan lebih banyak nuansa. Untuk detail lebih lanjut, lihat panduan teknis ini tentang Skrip Modul.

Masalah: Mendapatkan pesan kesalahan yang mencakup: "Infinite yield possible" atau "not a valid member".

  • Periksa ejaan skrip modul di mana ia dimuat. require() harus mencakup jalur dan ejaan yang tepat dari skrip modul, yang mungkin dinamai berbeda dari tabel modul.

Masalah: Mendapatkan pesan kesalahan yang mencakup: "attempt to index global".

  • Di skrip mana pun yang menggunakan skrip modul, pastikan ia dimuat menggunakan fungsi require(). Jika tidak, skrip tersebut tidak dapat menggunakan fungsi dan variabel dari skrip modul.

Ringkasan

Skrip modul di Roblox adalah metode yang digunakan oleh pengkode untuk mengorganisir dan menggunakan kembali kode. Skrip modul sering disimpan di ServerStorage (atau ReplicatedStorage untuk interaksi berbasis klien). Dari sana, skrip lain dapat memanggil fungsi dan variabel yang disimpan di skrip modul tersebut.

Misalnya, satu game dapat memberikan poin kepada pemain untuk mengumpulkan objek. Skrip modul dapat menangani kode untuk memberikan poin. Kemudian, skrip untuk berbagai jenis objek dapat memanggil fungsi skrip modul tersebut. Ini mengurangi kebutuhan untuk menggunakan kembali kode antara skrip, membuat kode lebih mudah dipahami dan dipelihara.

©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.