Jenis skrip dan lokasi

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

Bagi banyak pengembang, tantangan dasar untuk beradaptasi dengan skrip Roblox adalah pentingnya lokasi file dan properti Script.RunContext.Tergantung pada ketikskrip, lokasi di Explorer, dan konteks eksekusi, skrip dapat berperilaku sangat berbeda.Beberapa panggilan metode mungkin gagal, objek di pengalaman Anda mungkin tidak dapat diakses, atau skrip mungkin tidak berjalan sama semua.

Alasan kompleksitas ini adalah bahwa pengalaman Roblox adalah multiplayer secara default.Skrip membutuhkan kemampuan untuk hanya berjalan di server, hanya berjalan di klien, atau dibagikan di keduanya.Evolusi platform Roblox dari waktu ke waktu telah memperkomplikasi situasi lebih lanjut.

Jenis skrip

Roblox memiliki tiga jenis skrip:

  • Script - Kode yang dijalankan di server atau klien, tergantung pada lokasinya dan properti Script.RunContext.
  • LocalScript - Kode yang hanya berjalan di klien. Tidak memiliki konteks eksekusi.
  • ModuleScript - Kode yang dapat Anda gunakan kembali di skrip lain. Tidak memiliki konteks eksekusi.

Ketika Anda membuat Script , konteks eksekusi defaultnya adalah Legacy , yang berarti bahwa itu a) adalah skrip sisi server dan b) hanya dijalankan jika berada di kontainer server, seperti Workspace atau ServerScriptService .

  • Jika Anda mengubah konteks eksekusi skrip menjadi Server, sekarang juga dapat dijalankan di ReplicatedStorage, tetapi itu tidak direkomendasikan.Konten lokasi itu di-复制 ke klien, jadi itu adalah lokasi yang buruk untuk skrip sisi server.
  • Jika Anda mengubah konteks eksekusi skrip menjadi Client, itu dapat dijalankan di ReplicatedStorage .Ini juga dapat dijalankan di StarterCharacterScripts dan StarterPlayerScripts .Wadah pemula dityalin ke klien, meskipun, jadi skrip asli dan salinan berjalan, yang tidak diinginkan.

Untuk mengubah konteks eksekusi skrip, pilihnya di Explorer dan ubah nilainya di jendela Properti.

RunContext property indicated for a Script.

Rekomendasi

  • Menggunakan Server dan Client nilai untuk RunContext menghapus ambiguitas dari cara skrip dijalankan dan dapat membantu menjaga proyek Anda terorganisasi.Kasus penggunaan terbaik untuk nilai non-default RunContext adalah:

    • Skrip klien yang ingin Anda jalankan dari ReplicatedStorage atau ReplicatedFirst .
    • Skrip server atau klien yang Anda sertakan dalam model dan paket .Secara eksplisit menetapkan konteks eksekusi membuat model dan paket lebih mungkin berfungsi dengan baik dari berbagai lokasi.
  • Untuk berbagi kode antara skrip server dan klien, gunakan ModuleScripts di ReplicatedStorage .

  • Gunakan LocalScripts di StarterCharacterScripts , StarterPlayerScripts , StarterGui , dan StarterPack .

Lokasi skrip

Lokasi | Deskripsi :--- | :--- Ruang kerja | Mewakili dunia permainan.Lokasi ini bekerja dengan baik untuk skrip server yang terhubung langsung ke objek dan mengontrol perilaku mereka.ReplicatedFirst | Berisi objek yang dipindahkan ke klien sebelum hal lain.Lokasi ini ideal untuk set minimum absolut objek dan skrip klien yang diperlukan untuk menampilkan layar pemuatan.ReplicatedStorage | Berisi objek yang direplikasi ke klien dan server.Lokasi ini ideal untuk Class.ModuleScript\|ModuleScripts yang ingin Anda gunakan di kedua server dan klien. Class.LocalScript\|LocalScripts jangan lari dari lokasi ini, tetapi Class.Script\|Scripts dengan konteks eksekusi Client lakukan.ServerScriptService | Berisi skrip server.Lokasi ini ideal untuk skrip yang perlu mengakses fungsi atau objek sisi server, seperti logika permainan dan penyimpanan cloud.Penyimpanan Server | Berisi objek sisi server.Lokasi ini ideal untuk objek besar yang tidak perlu segera direplikasi ke klien saat mereka bergabung dengan pengalaman.Skrip tidak berjalan dari lokasi ini, tetapi Anda dapat menyimpan sisi server Class.ModuleScript\|ModuleScripts di sini.StarterPlayer.StarterCharacterScripts | Berisi Class.LocalScript\|LocalScripts yang dijalankan saat karakter muncul.StarterPlayer.StarterPlayerScripts | Berisi skrip tujuan umum Class.LocalScript\|LocalScripts yang dijalankan saat pemain bergabung dengan pengalaman.StarterGui | Berisi elemen GUI yang ditampilkan klien saat memuat permainan.Class.LocalScript\|LocalScripts dapat lari dari lokasi ini.Lokasi ini ideal untuk skrip yang memodifikasi antarmuka pengguna game, seperti menambahkan tombol, menu, dan pop-up.StarterPack | Umumnya hanya berisi Class.Tool\|Tools , tetapi juga dapat mencakup Class.LocalScript\|LocalScripts untuk mengatur ransel pemain.

Gambar ini menunjukkan lokasi jendela Explorer mana yang dapat berisi skrip klien.Ingat, ReplicatedFirst dan ReplicatedStorage dapat berisi Scripts dengan RunContext dari Client , sementara wadah Starter[] harus menggunakan LocalScripts .

Diagram showing which script locations run on clients.

Contoh struktur proyek

Proyek referensi Tanaman menunjukkan bagaimana Anda bisa mengatur kode Anda dalam pengalaman besar dan kompleks.

Perhatian khusus adalah bagaimana ia menyimpan mayoritas besar kode sebagai dapat digunakan kembali ModuleScripts di ReplicatedStorage dan ServerStorage .