Pengantar ke Skrip Modul

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

Saat proyek menjadi kompleks, menjadi penting untuk berpikir bagaimana skrip diatur. Praktik manajemen yang baik dapat memastikan bahwa kode tidak duplikasi di antara skrip, atau menjadi sulit untuk dikelola.

Cara yang lebih baik untuk mengatur dan menggunakan kembali kode adalah dengan naskah modul , jenis script yang unik yang menyimpan set fungsi dan variabel yang dirancang untuk memenuhi tujuan bersama, seperti mengelola uang pemain atau musuh. Kode dalam naskah modul dapat digunakan oleh script lain. Dengan demikian, Anda dapat memanggil fungsi yang s

Dengan menyimpan kode yang sering digunakan di script modul, membuat perawatan dan organisasi kode lebih mudah karena perubahan hanya perlu dibuat ke satu script modul, bukan menyetujui beberapa script.

Pengantar Kode Modul

Script modul sebenarnya adalah objek terpisah mereka sendiri dibandingkan dengan objek skrip. Di Roblox, script modul dapat ditandai dengan ujung ungu ikon.

Membuat Skrip Modul

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

  1. Buat ModuleScript di ServerStorage .

Struktur Skrip Modul

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


local Module = {}
return Module

Baris local Module = {} menciptakan tabel, atau wadah kode, di mana fungsi dan variabel modul dapat disimpan. Tabel ini harus diubah ke tujuan modul, seperti RewardManager atau ParticleController . Berbeda dengan variabel l


local RewardManager = {}
return RewardManager

Jadi, script lain dapat menggunakan fungsi non-lokal atau variabel modul, setiap modul berakhir dengan kembalian MyModule. Setiap kali script lain mencoba mendapatkan kode dari modul, kembalian memungkinkan script itu mengakses kode yang disimpan di tabel modul.

Menambahkan ke Skrip Modul

Untuk menambahkan fungsi atau variabel ke modul yang dapat digunakan dalam script lain, tulis nama modul tabel, diikuti oleh dot, dan nama fungsi atau variabel, seperti dalam TestModule.myVariable . Menggunakan operator dot adalah cara lain untuk menambahkan kode ke tabel, memungkinkan script lain untuk mengakses kode itu setiap kali tabel modul dikembalikan.


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

Pemetaan dalam Modul Skrip

Untuk fungsi modul atau variabel yang akan digunakan dalam skrip luar, jangan mengetik local .

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

Setiap kode yang digunakan hanya oleh naskah module itu harus masih mencakup local . kejadian, kode di bawah ini meng包括 variabel lokal difficultyModifier, yang hanya dapat digunakan dalam naskah module itu, dan fungsi 1> GCoinReward()1>, yang dapat digunakan dalam skrip di luar modul


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

Menggunakan Modul dalam Script Lain

Secara default, naskah modul tidak dapat mengeksekusi kode — itu perlu dimuat dalam naskah lain menggunakan kata kunci require(). Fungsi require() menerima satu argumen, lokasi naskah script di Explorer.

Untuk menggunakan modul, dalam naskah terpisah, tetapkan variabel sama dengan require(moduleScript) .


local MyModule = require(ServerStorage.ModuleScript)

Sekarang, variabel MyModule mengandung tabel modul yang dibuat dalam skrip modul tersebut. Untuk menggunakan fungsi dan variabel dari tabel ini, ketik nama variabel, diikuti oleh dot, dan nama persis apa yang akan digunakan dalam modul script tersebut, seperti MyModule.myFunction() . Ketika script berjalan dan mencapai


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

Contoh RewardManager

ModuleScript - RewardManager

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

local ServerStorage = game:GetService("ServerStorage")
-- Muat naskah modul
local RewardManager = require(ServerStorage.RewardManager)
--Memanggil fungsi dari naskah modul
local coins = RewardManager.getCoinReward("easy")
print("Should award " .. coins .. " coins")

Umum Troubleshooting

Beberapa tips di sini mengatasi masalah umum saat bekerja dengan skrip modul. Ingatlah bahwa modul skrip dapat menjadi topik yang rumit dengan lebih banyak nuansa. Untuk lebih banyak rincian, lihat panduan teknis ini tentang Module Scripts . Masalah: Dapatkan pesan kesalahan termasuk: "Infinite yield possible" atau "not a valid member".

  • Periksa tata bahasa modul script di mana itu dimuat. require() harus mencakup jalan dan tata bahasa modul script, yang mungkin bernama berbeda dari tabel modul. Masalah: Dapatkan pesan kesalahan termasuk: "attempt to index global".

  • Dalam setiap skrip menggunakan modul skrip, pastikan itu dimuat menggunakan fungsi require(). Jika tidak, skrip itu tidak dapat menggunakan fungsi dan variabel dari modul skrip.

Sintesis

Skrip modul di Roblox adalah metode yang digunakan untuk mengatur dan menggunakan kembali kode. Skrip modul sering disimpan di ServerStorage (atau ReplicatedStorage untuk interaksi klien-based). Dari sana, skrip lain dapat memanggil fungsi dan variabel yang disimpan dalam modul script tersebut.

kejadian, satu game mungkin memberikan poin kepada pemain untuk mengumpulkan objek. Modul skrip dapat menangani kode untuk memberikan poin. Kemudian, skrip untuk berbagai jenis objek hanya dapat menangani fungsi modul. Ini mengurangi kebutuhan untuk menggunakan kode di antara skrip, membuat kode lebih mudah dimengerti dan dipertahankan.