Pengantar ke skrip modul

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

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

Cara yang lebih baik untuk mengatur dan menggunakan kembali kode adalah dengan skrip modul , jenis skrip unik yang menyimpan serangkaian 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 begitu, Anda dapat memanggil fungsi yang sama yang memberikan koin dari banyak skrip berbeda setiap kali pemain menyelesaikan pencarian atau menemukan pengambilan.

Dengan menyimpan kode yang umum digunakan di skrip modul, membuat pemeliharaan dan organisasi kode lebih mudah karena perubahan hanya perlu dilakukan pada satu skrip modul, bukan memperbarui banyak skrip.

Dasar-dasar skrip modul

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

Buat skrip modul

ModuleScript umumnya 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 naskah module

Saat 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 diubah namanya menjadi tujuan modul, seperti RewardManager atau ParticleController.Berlawanan dengan variabel lain yang merupakan kasus kuda ( myVariable ), tabel modul direkomendasikan untuk menggunakan kasus pascal dan mulai dikapitalisasi ( MyModule ).


local RewardManager = {}
return RewardManager

Jadi skrip lain dapat menggunakan fungsi atau variabel non-lokal modul, setiap modul berakhir dengan return MyModule .Setiap kali skrip lain mencoba mendapatkan kode dari modul, kembalikan akses kode skrip yang disimpan di dalam tabel modul.

Tambahkan ke skrip modul

Untuk menambahkan fungsi atau variabel ke modul yang dapat digunakan dalam skrip lain, ketik nama tabel modul, diikuti dengan dot, dan nama fungsi atau variabel, seperti di TestModule.myVariable .Menggunakan operator dot adalah cara lain untuk menambahkan kode ke tabel, memungkinkan skrip lain 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)
-- kodepenyimpan tempat
end
return TestModule

Scope dalam skrip modul

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.Meskipun ini adalah praktik yang baik untuk sebagian besar skrip untuk mengurangi kesalahan dan troubleshooting, Anda tidak dapat membuat fungsi dan variabel skrip modul lokal.

Kode apa pun yang digunakan hanya oleh skrip modul tersebut masih harus termasuk local .Sebagai kejadian, kode di bawah ini mencakup variabel lokal difficultyModifier , yang hanya dapat digunakan dalam skrip modul, dan fungsi getCoinReward() , yang dapat digunakan dalam skrip di luar modul.


local RewardManager = {}
-- Hanya dapat digunakan dalam skrip modul
local rewardCoins = 50
-- Hanya dapat digunakan dalam 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

Gunakan modul di skrip lain

Secara sendiri, skrip modul tidak dapat menjalankan kode - perlu dimuat di skrip lain menggunakan kata kunci require() .Fungsi require() menerima satu argumen, lokasi skrip modul di Explorer.

Untuk menggunakan modul, dalam skrip terpisah, atur variabel yang 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 itu, ketik nama variabel, diikuti dengan titik, dan nama persis apa yang harus digunakan dalam skrip modul itu, seperti MyModule.myFunction() .Ketika skrip dijalankan dan mencapai baris itu, ia akan mengakses fungsi atau variabel khusus yang disimpan di tabel modul.


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

Contoh Manajer Hadiah

ModuleScript - Manajer Hadiah

local RewardManager = {}
-- Hanya dapat digunakan dalam skrip modul
local rewardCoins = 50
-- Hanya dapat digunakan dalam 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
Skrip - Skrip Kotak Harta Karun

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

Penyelesaian masalah umum

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

  • Periksa ejaan skrip modul di mana itu dimuat. require() harus termasuk jalur dan ejaan yang tepat dari skrip modul, yang dapat diberi nama berbeda dari tabel modul. Masalah: Dapatkan pesan kesalahan termasuk: "attempt to index global" .

  • Di dalam skrip apa pun yang menggunakan skrip modul, pastikan dibuat dengan menggunakan fungsi require() .Jika tidak, skrip itu tidak dapat menggunakan fungsi dan variabel dari skrip modul.

Singkatan

Skrip modul di Roblox adalah metode yang digunakan pemrogram untuk mengatur dan menggunakan ulang 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 kejadian, satu permainan dapat memberikan poin kepada pemain untuk mengumpulkan objek.Skrip modul dapat menangani kode untuk memberikan poin.Kemudian, skrip untuk berbagai jenis objek hanya dapat memanggil fungsi skrip modul.Ini mengurangi kebutuhan untuk menggunakan kembali kode di antara skrip, sehingga kode lebih mudah dipahami dan dirawat.