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 yang berpengalaman memulai dengan Roblox, termasuk orientasi dasar, perbandingan konseptual, dan perbedaan kunci antara kedua platform.

Orientasi

Antarmuka pengguna Unity dengan markup untuk menunjukkan berbagai jendela dan panel. Antarmuka pengguna Roblox Studio dengan markup untuk menunjukkan berbagai jendela dan panel.

Jendela Hierarchy di Unity dan Explorer di Roblox Studio adalah jendela utama untuk mengorganisir elemen dalam adegan 3D:

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

Namun, jendela Hierarchy tidak memiliki struktur yang sudah ditentukan, sedangkan jendela Explorer memiliki struktur yang ketat. Mungkin akan membantu jika Anda menganggap jendela Explorer sebagai kombinasi dari jendela Hierarchy dan Project di Unity, dengan folder Workspace sebagai elemen yang paling dikenali.

Demikian pula, Asset Manager di Roblox Studio dan Toolbox tumpang tindih dengan jendela Project di Unity. Asset Manager memungkinkan Anda mengelola semua aset dalam game Anda, sementara Toolbox memungkinkan Anda mengakses aset yang telah Anda terbitkan. Toolbox juga memungkinkan Anda mencari di Creator Store untuk aset dari Roblox atau komunitas, mirip dengan Asset Store di Unity.

Perbedaan filosofis

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

  • Representasi: GameObjects di Unity adalah konsep tingkat tinggi untuk setiap objek dalam suatu adegan, sedangkan Parts di Roblox dirancang untuk mewakili objek fisik seperti balok kayu dan bola plastik, bukan geometri abstrak seperti objek primitif di Unity.
  • Fisik: Untuk melakukan simulasi fisika di Unity, Anda melampirkan komponen seperti Rigidbody dan Collider ke GameObject. Di Roblox, fisika sudah dibangun ke dalam tipe data Parts; mesin menangani interaksi secara otomatis.

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

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

Perbandingan lainnya adalah antara GameObject di Unity dan Model di Roblox. Model bertindak sebagai wadah untuk kumpulan bagian yang saling terhubung dengan cara yang sama seperti Anda mungkin menetapkan hubungan orang tua-anak antara banyak GameObjects di Unity. Anda menentukan salah satu bagian model sebagai primary part untuk mendefinisikan titik pivot. Model juga menampung skrip, animasi, efek suara, prompt, kendala, pemancar partikel, dan banyak lagi.

Sebagai contoh, GameObject di Unity mungkin memiliki komponen untuk ParticleSystem, Physics3D, SpringConstraint, dan sebuah skrip. Di jendela Hierarchy, Anda melihat satu GameObject bernama SpringyFireball. Jendela Inspector menunjukkan kumpulan komponen dan properti.

Di Roblox, model SpringyFireball yang setara di jendela Explorer mungkin terlihat seperti ini:


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

Filosofi fisika secara default di Roblox meluas ke proses membangun model 3D. Di Roblox, mengelas beberapa bagian menjadi sebuah assembly adalah cara yang sangat baik untuk membangun sesuatu dengan cepat, karena Roblox memperlakukan bagian yang dilas sebagai satu tubuh kaku. Pendekatan ini tidak tersedia di Unity.

Alih-alih menggunakan satuan metrik standar untuk panjang dan massa, Roblox menggunakan satuan notional yang disebut studs dan Roblox Mass Units (RMUs). Untuk konversi metrik yang kira-kira dan rekomendasi terkait penggunaan, lihat Units.

Lokasi penting

Game Roblox adalah multiplayer secara default, sehingga Roblox Studio menyertakan banyak lokasi penyimpanan berbeda dengan perilaku tertentu. Untuk informasi lebih lanjut, lihat client-server runtime dan pengorganisasian objek.

LocationDescription
WorkspaceMewakili dunia 3D permainan. Lokasi ini cocok untuk skrip server yang terhubung langsung ke objek dan mengontrol perilakunya.
ReplicatedFirstMenyimpan objek yang direplikasi ke klien sebelum yang lain. Lokasi ini ideal untuk set objek dan skrip klien minimal yang diperlukan untuk menampilkan layar pemuatan.
ReplicatedStorageMenyimpan objek yang direplikasi ke klien dan server. Lokasi ini ideal untuk ModuleScripts yang ingin Anda gunakan di server dan klien. LocalScripts tidak dijalankan dari lokasi ini, tetapi Scripts dengan RunContext dari Client melakukannya.
ServerScriptServiceMenyimpan skrip server. Lokasi ini ideal untuk skrip yang perlu mengakses fungsionalitas atau objek sisi server, seperti logika permainan dan penyimpanan cloud.
ServerStorageMenyimpan objek sisi server. Lokasi ini ideal untuk objek besar yang tidak perlu segera direplikasi ke klien saat mereka bergabung ke permainan. Skrip tidak dijalankan dari lokasi ini, tetapi Anda dapat menyimpan ModuleScripts sisi server di sini.
StarterPlayerStarterCharacterScriptsMenyimpan LocalScripts yang dijalankan saat karakter muncul.
StarterPlayerStarterPlayerScriptsMenyimpan LocalScripts serba guna yang dijalankan saat pemain bergabung ke permainan.
StarterGuiMenyimpan elemen GUI yang ditampilkan klien saat memuat permainan. LocalScripts dapat dijalankan dari lokasi ini. Lokasi ini ideal untuk skrip yang memodifikasi antarmuka pengguna permainan, seperti menambahkan tombol, menu, dan pop-up.
StarterPackUmumnya hanya menyimpan Tools, tetapi juga dapat menyertakan LocalScripts untuk menyiapkan ransel pemain.

Skrip

Roblox games support three different types of Luau scripts:

  • Skrip Klien

    Skrip-skrip ini dijalankan di klien, dan server tidak memiliki visibilitas terhadap perilakunya. Karena alasan warisan, skrip ini dapat berupa LocalScripts atau Scripts dengan nilai RunContext dari Client. Skrip klien biasanya berada dalam ReplicatedStorage, StarterPlayerScripts, atau StarterCharacterScripts.

  • Skrip Server

    Skrip-skrip ini dijalankan di server, dan klien tidak memiliki visibilitas terhadap perilakunya. Skrip server memiliki nilai RunContext dari Server dan biasanya berada dalam ServerScriptService, yang kontennya tidak direplikasi ke klien.

  • Skrip Modul

    Skrip-skrip ini adalah potongan kode yang dapat digunakan kembali yang mengembalikan tepat satu nilai, biasanya sebuah fungsi atau tabel (atau tabel fungsi). Daripada menduplikasi kode dalam skrip klien dan server, gunakan skrip modul untuk berbagi kode dan data antara keduanya. Skrip modul sering kali berada dalam ReplicatedStorage, tetapi dapat berada di tempat lain jika Anda ingin berbagi kode antara skrip di sisi yang sama dari batas klien-server.

Unity tidak memiliki konsep berbagai jenis skrip. Jika Anda memilih untuk membuat game multiplayer, Unity menggunakan pustaka jaringan 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 render, Anda menambahkan kode ke metode Update(). Untuk menangani peristiwa tabrakan fisika, Anda menambahkan kode ke metode OnCollideEnter().

Skrip Roblox lebih didorong oleh peristiwa. Anda mengakses fungsionalitas serupa dengan mendaftar ke layanan dan mendengarkan pembaruan.

C# dan Luau

Untuk pemrograman, Unity menggunakan C#. Roblox menggunakan Luau, bahasa pemrograman yang berasal dari Lua 5.1.

Dibandingkan dengan C#, Luau bertipe bertahap dan umumnya memiliki sintaksis yang kurang verbose. Namun, dalam proyek yang lebih besar, tipe bertahap dapat memperkenalkan kategori bug yang dihindari oleh bahasa yang ketat seperti C#, jadi pertimbangkan untuk mengaktifkan strict type checking dalam skrip Roblox.

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

Contoh kode Luau

Contoh kode Luau berikut ini menunjukkan bagaimana cara mendengarkan input pengguna (dalam hal ini, tombol E) setelah pemain mengenakan pancingan dan memanggil fungsi tambahan:


local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Ambil skrip modul dari ReplicatedStorage yang mengembalikan satu fungsi
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Mengasumsikan bahwa skrip ini adalah anak dari pancingan
local fishingPole = script.Parent
local ACTION_CAST = "Cast"
-- Periksa bahwa tombol ditekan, kemudian panggil fungsi lain
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- Hanya aktifkan aksi ketika pemain mengenakan pancingan
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Nonaktifkan aksi ketika pemain melepas pancingan
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)

Skrip Roblox dapat relatif ringkas karena Roblox memiliki banyak asumsi bawaan: sebuah Player dengan karakter Humanoid yang terhubung ke server dan dapat meng equip Tools. Asumsi ini tidak ada di Unity, sehingga implementasinya akan sangat berbeda.

Aset

Unity dan Roblox keduanya mendukung mengimpor mesh dan model kustom dalam format .fbx. Jenis aset tertentu mungkin memerlukan konfigurasi dan pengaturan ekspor khusus dari perangkat lunak pemodelan pihak ketiga Anda. Untuk informasi lebih lanjut, lihat halaman-halaman berikut:

Di Unity, objek diimpor ke direktori Assets Anda, terlihat di jendela Project. Di Roblox, aset diimpor ke dalam Workspace dan ke Toolbox atau Asset Manager.

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

Transforms

Transformasi milik Unity dan CFrames Roblox memiliki tujuan yang serupa dalam mewakili transformasi 3D objek:

  • Baik transformasi maupun CFrames mewakili posisi dan rotasi sebuah objek di ruang 3D. Transformasi mencakup skala, sedangkan Roblox menggunakan properti BasePart.Size yang bukan bagian dari CFrame.
  • Keduanya mendukung perkalian untuk transformasi yang kompleks dan memiliki metode bawaan untuk manipulasi lainnya.

Kolaborasi

Di Unity, Anda bekerja sama dengan sistem kontrol versi standar atau layanan berbayar seperti Unity Version Control.

File Roblox hidup di cloud (meskipun Anda dapat mengekspor salinan), sehingga Roblox Studio menyediakan alur kerja kolaborasi bawaan untuk pengeditan simultan, manajemen grup, izin, peng草草 Drafting, dan lebih banyak lagi. Lihat Kolaborasi.

Plugin

Mirip dengan alat Unity, Roblox Studio mendukung plugin, yang dapat menyederhanakan atau memberikan Anda kontrol tambahan atas berbagai aspek dari proses pengembangan. Plugin tersedia di Creator Store, sama seperti aset, banyak di antaranya gratis.

Glosarium

UnityRobloxCatatan
ScenePlace
GameObjectPart atau ModelLihat Perbedaan filosofis.
PrefabPackage
TransformCFrameCFrame tidak menyertakan informasi skala. Lihat Transforms.
HierarchyExplorer
InspectorProperties
Scene view3D viewport
Game view3D viewportTampilan akan bertransisi menjadi tampilan permainan saat Anda menguji game Anda.
Project windowAsset Manager atau Toolbox
Terrain InspectorTerrain Editor
Spawn pointSpawnLocation
ConsoleOutput
Asset StoreCreator Store
OverlaysToolbar
ToolPlugin
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.