Roblox untuk pengembang Unity

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

Halaman ini berisi informasi untuk membantu pengembang Unity berpengalaman memulai dengan Roblox: orientasi dasar, perbandingan konsep, dan perbedaan kunci antara kedua platform.

Dapatkan orientasi

Jendela Hierarki Unity dan Explorer Roblox Studio adalah jendela utama untuk mengatur elemen di adegan 3D:

  • Keduanya memungkinkan Anda untuk mengelola dan mengatur objek (misalnya, karakter dan aset lingkungan).
  • Keduanya menggunakan struktur pohon untuk hubungan orangtua-anak antara objek.

Namun, jendela Hierarki tidak memiliki struktur yang telah ditentukan sebelumnya, sementara jendela Explorer memiliki struktur yang ketat.Ini mungkin membantu untuk memikirkan jendela Explorer sebagai kombinasi Hierarki Unity dan jendela Proyek, dengan folder Workspace sebagai elemen yang paling dapat diidentifikasi.

Demikian pula, Roblox Studio Manajer Aset dan Toolbox tumpang tindih dengan jendela Proyek Unity.Manajer Aset memungkinkan Anda mengelola semua aset dalam pengalaman Anda, sementara Kotak Alat memungkinkan Anda mengakses aset apa pun yang telah Anda publikasikan.Toolbox juga memungkinkan Anda untuk mencari Toko Pencipta untuk aset dari Roblox atau komunitas, mirip dengan Toko Aset Unity.

Perbedaan filosofis

Roblox adalah "mesin simulasi" daripada mesin permainan tradisional.Unity GameObjects dan Roblox Parts keduanya berfungsi sebagai blok bangunan dasar untuk membuat objek di lingkungan 3D, tetapi dalam praktik, keduanya cukup berbeda:

  • Perwakilan : GameObjects di Unity adalah konsep tingkat lebih tinggi untuk objek apa pun di adegan, sementara Parts di Roblox dirancang untuk mewakili objek fisik seperti balok kayu dan bola plastik, bukan geometri abstrak seperti objek asli di Unity.
  • Fisika : Untuk melakukan simulasi fisika di Unity, Anda menempelkan komponen seperti dan ke .Di Roblox, fisika dibangun ke dalam tipe data Parts ; mesin menangani interaksi secara otomatis.

Anda dapat melihat perbedaan segera jika Anda membuat GameObject dan Part.The GameObject tidak memiliki lebih dari posisi, rotasi, dan skala.The Part memiliki informasi yang sama - ditambah material dan warna, nilai reflektansi dan transparansi, massa dan bentuk, dan banyak lagi.Mengubah Part menjadi sesuatu yang lebih mirip dengan kosong GameObject berarti menghapus banyak properti bawaan.Sebaliknya, Anda dapat membuat GameObject yang terlihat banyak seperti Part dengan menambahkan MeshFilter , MeshRenderer , Collider , dan Rigidbody komponen ke dalamnya.

Dari perspektif pemrograman, GameObject paling mirip dengan Roblox Instance, kelas dasar untuk semua KelasRoblox lainnya, tetapi karena Anda tidak (dan tidak bisa) membuat objek tipe Instance , perbandingan tidak terlalu praktis.

Perbandingan lain adalah Unity GameObject ke Roblox Model.Model bertindak sebagai wadah untuk koleksi bagian terhubung di cara yang sama seperti Anda dapat membangun hubungan orangtua-anak di antara banyak GameObjects di Unity.Anda menentukan salah satu bagian model sebagai bagian utamanya untuk mendefinisikan titik pivot untuk mendefinisikan titik pivot.Model juga menyimpan skrip, animasi, efek suara, perintah, pemancar partikel, dan banyak lagi.

Sebagai contoh, Unity mungkin memiliki komponen untuk , , , dan sebuah skrip.Di jendela Hierarki, Anda melihat satu GameObject bernama SpringyFireball .Jendela Inspektur menunjukkan koleksi komponen dan properti.

Di Roblox, model serupa SpringyFireball yang dapat dibandingkan di jendela Explorer mungkin terlihat seperti ini:


Model
|- ParticleEmitter
|- MeshPart
|- SpringConstraint
|- ClickDetector
| |- Script

Filosofi fisika default Roblox memperluas ke proses membangun model 3D.Di Roblox, menyambungkan beberapa bagian bersama menjadi satu kumpulan adalah cara yang sangat baik untuk membangun sesuatu dengan cepat, karena Roblox memperlakukan bagian yang disambung sebagai tubuh tunggal yang kaku.Pendekatan ini tidak tersedia di Unity.

Daripada menggunakan unit metrik standar untuk panjang dan massa, Roblox menggunakan unit notional yang disebut stud dan Unit Mass Roblox (RMU).Untuk konversi dan rekomendasi metrik kira-kira dan sekitar penggunaan, lihat Unit.

Perkara lokasi

Pengalaman Roblox adalah multi-pemain secara default, jadi Roblox Studio termasuk banyak lokasi penyimpanan berbeda dengan perilaku spesifik.Sebagai contoh, skrip mungkin dijalankan saat Anda menempatkannya di ReplicatedStorage , tetapi tidak saat Anda menempatkannya di StarterPlayerScripts .Untuk informasi lebih lanjut, lihat waktu eksekusi klien-server dan organisasi objek.

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.

Pemograman

Pengalaman Roblox mendukung tiga jenis skrip Luau yang berbeda:

  • Skrip klien

    Skrip ini dijalankan di klien, dan server tidak memiliki visibilitas ke perilaku mereka.Untuk alasan warisan, skrip ini dapat mengambil bentuk LocalScripts atau Scripts dengan nilai RunContext dari Client.Skrip klien biasanya hidup di ReplicatedStorage , StarterPlayerScripts , atau StarterCharacterScripts .

  • Skrip server

    Skrip ini dijalankan di server, dan klien tidak memiliki visibilitas ke perilaku mereka.Skrip server memiliki nilai RunContext dari Server dan biasanya tinggal di ServerScriptService , isi yang tidak direplikasikan ke klien game.

  • Skrip modul

    Skrip ini adalah bagian kode yang dapat digunakan ulang yang kembali persis satu nilai, biasanya fungsi atau tabel (atau tabel fungsi).Daripada menyalin kode di skrip klien dan server, gunakan skrip modul untuk berbagi kode dan data di antara keduanya.Skrip modul sering tinggal di ReplicatedStorage , tetapi bisa tinggal di tempat lain jika Anda ingin berbagi kode di antara skrip di sisi yang sama dari batas klien-server.

Unity tidak memiliki konsep jenis skrip yang berbeda.Jika Anda memilih untuk membuat gamemultiplayer, Unity menggunakan perpustakaan jaringannya untuk menunjukkan kapan GameObject (dan skripnya) harus eksklusif untuk server.

Di Unity, banyak fungsi mesin tersedia melalui metode MonoBehaviour .Sebagai contoh, untuk menjalankan kode sebelum loop rendering, Anda menambahkan kode ke metode Update().Untuk menangani peristiwa tabrakan fisika, Anda menambahkan kode ke metode OnCollideEnter().

Skrip Roblox lebih didorong oleh acara. Anda mengakses fungsi serupa dengan berlangganan ke layanan dan mendengarkan pembaruan.

C# dan Luau

Untuk scripting, Unity menggunakan C#. Roblox menggunakan Luau , bahasa penulisan skrip yang berasal dari Lua 5.1 .

Dibandingkan dengan C#, Luau secara bertahap ditiketkan dan umumnya memiliki syntax yang kurang panjang.Namun, dalam proyek yang lebih besar, pengetikan bertahap dapat memperkenalkan kategori bug yang kuat ditulis dalam bahasa seperti C#, jadi pertimbangkan untuk mengaktifkan pemeriksaan tipe ketat di skrip Roblox.

Untuk perbedaan sintaks dasar antara bahasa pemrograman, lihat Perbandingan Luau dan C#.

Contoh kode Luau

Contoh kode Luau berikut menunjukkan cara, setelah pemain memasang tongkat memancing, mendengarkan input pengguna (dalam kasus ini, kunci E ) dan memanggil fungsi tambahan:


-- Dapatkan layanan permainan yang diperlukan
local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Dapatkan skrip modul dari ReplicatedStorage yang mengembalikan fungsi tunggal
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Mengasumsikan bahwa skrip ini adalah anak dari tiang pancing
local fishingPole = script.Parent
local ACTION_CAST = "Cast"
-- Periksa bahwa kunci turun, lalu panggil fungsi lain
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- Hanya aktifkan tindakan ketika pemain memakai tongkat memancing
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Nonaktifkan tindakan saat pemain melepaskan tongkat memancing
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)

Skrip Roblox dapat relatif singkat karena Roblox memiliki banyak asumsi bawaan: a Player dengan karakter Humanoid yang terhubung ke server dan dapat dilengkapi Tools .Asumsi ini tidak ada di Unity, jadi implementasinya akan sangat berbeda.

Aktiva

Kesatuan dan Roblox keduanya mendukung impor meshes dan model khusus dalam format .fbx .Beberapa jenis aset mungkin memerlukan konfigurasi dan pengaturan ekspor khusus dari perangkat lunak pemodelan pihak ketiga.Untuk informasi lebih lanjut, lihat halaman berikut:

Di Unity, objek diimpor ke direktori Assets Anda, terlihat di jendela Proyek.Di Roblox, aset diimpor ke Workspace Anda dan ke bagian Toolbox atau Inventaris dari Manajer Aset.

Roblox juga menawarkan plugin Blender sumber terbuka untuk mempercepat proses impor.

Transformasi

Transformasi props.engine dan Roblox's CFrames melayani tujuan serupa dalam mewakili transformasi 3D objek:

  • Kedua transformasi dan CFrames mewakili posisi dan rotasi objek di ruang 3D.Transformasi termasuk skala, sementara Roblox menggunakan properti BasePart.Size yang bukan bagian dari CFrame.
  • Keduanya mendukung penggandaan (yaitu komposisi) untuk transformasi kompleks dan memiliki metode bawaan untuk manipulasi lainnya.

Kolaborasi

Di Unity, Anda berkolaborasi dengan sistem kontrol versi standar atau layanan berbayar seperti Kontrol Versi Unity.

File Roblox hidup di cloud (meskipun Anda dapat mengekspor salinan), jadi Roblox Studio menyediakan alur kerja kolaborasi bawaan untuk editing bersamaan, manajemen kelompok, izin, menyusun naskah, dan banyak lagi.Lihat Kolaborasi.

Plugin

Mirip dengan alat Unity, Roblox Studio mendukung plugin , yang dapat mempermudah atau memberi Anda kontrol tambahan atas berbagai aspek proses pengembangan.Plugin tersedia di Toko KreatorPencipta, sama seperti aset, banyak gratis.

Kamus

| Persatuan | Roblox | Catatan | | :--- | :--- | :--- | | Scene | Tempat | | | GameObject | Part atau Model | Lihat Perbedaan Filosofis .| | Prefab | Paket | | | Transform | CFrame | CFrame tidak termasuk informasi skala.Lihat Transformasi.| | Jendela hierarki | Jendela penjelajah | | | Inspektur | Jendela properti | | | Pandangan panggung | Port jendela | | | Pandangan permainan | Port jendela | Transisi Viewport ke dalam pandangan permainan saat Anda menguji pengalaman Anda.| | Jendela proyek | Manajer aset atau Kotak alat | | | Inspektur tanah | Editor tanah | | | Titik spawn | SpawnLocation | | | Konsol | Output | | | Toko aset | Toko pencipta | | | Overlay | Bilah menu | | | Alat | Plugin | |