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 berbagai skrip setiap kali pemain menyelesaikan quest atau menemukan objek.

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

Dasar-dasar skrip modul

Skrip modul sebenarnya adalah objek terpisah dibandingkan dengan objek skrip. Di Roblox, skrip modul dapat diidentifikasi 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 sebuah tabel, atau kontainer kode, di mana fungsi dan variabel bersama modul dapat disimpan. Tabel ini harus dinamai sesuai dengan tujuan modul, seperti RewardManager atau ParticleController. Tidak seperti variabel lain yang menggunakan camel case (myVariable), tabel modul disarankan untuk menggunakan pascal case dan dimulai dengan huruf besar (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 mengambil kode dari modul, return memungkinkan skrip itu mengakses kode yang disimpan di dalam tabel modul.

Menambah ke skrip modul

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


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

Lingkup di skrip modul

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

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

Setiap kode yang digunakan hanya oleh skrip modul itu tetap harus menyertakan local. Misalnya, kode di bawah ini mencakup variabel lokal difficultyModifier, yang hanya dapat digunakan dalam skrip modul itu, dan fungsi getCoinReward(), yang dapat digunakan dalam 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 dalam skrip lain menggunakan kata kunci require(). Fungsi require() menerima satu argumen, lokasi skrip modul di Explorer.

Untuk menggunakan modul, dalam skrip terpisah, setel variabel sama dengan require(moduleScript).


local MyModule = require(ServerStorage.ModuleScript)

Sekarang, variabel MyModule berisi tabel modul yang dibuat dalam skrip modul itu. Untuk menggunakan fungsi dan variabel dari tabel tersebut, ketik nama variabel, diikuti dengan titik, dan nama persis dari apa yang akan digunakan dalam skrip modul itu, seperti MyModule.myFunction(). Ketika skrip dijalankan dan mencapai baris itu, ia akan mengakses fungsi atau variabel spesifik yang disimpan dalam 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("Harus memberikan " .. coins .. " koin")

Pemecahan masalah umum

Beberapa tips di sini membahas masalah umum saat bekerja dengan skrip modul. Ingat bahwa skrip modul dapat 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 menyertakan 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 itu 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 itu.

Sebagai contoh, satu pengalaman dapat memberikan poin kepada pemain untuk mengumpulkan objek. Sebuah skrip modul dapat menangani kode untuk memberikan poin. Kemudian, skrip untuk berbagai jenis objek dapat hanya memanggil fungsi skrip modul. Ini mengurangi kebutuhan untuk menggunakan kembali kode antara skrip, membuat kode lebih mudah dipahami dan dikelola.

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