Unity geliştiricileri için Roblox

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Bu sayfa, deneyimli Unity geliştiricilerinin Roblox ile başlamalarına yardımcı olacak bilgileri içermektedir; temel yönlendirme, kavramsal karşılaştırma ve iki platform arasındaki ana farklılıklar.

Yönlendirme

Çeşitli pencereleri ve panelleri göstermek için işaretleme ile birlikte Unity kullanıcı arayüzü. Çeşitli pencereleri ve panelleri göstermek için işaretleme ile birlikte Roblox Studio kullanıcı arayüzü.

Unity'nin Hiyerarşi penceresi ve Roblox Studio'nun Keşif penceresi, 3D sahnelerde öğeleri organize etmek için ana pencerelerdir:

  • Her ikisi de nesneleri (örneğin, karakterler ve çevresel varlıklar) yönetmenizi ve organize etmenizi sağlar.
  • Her ikisi de nesneler arasındaki ebeveyn-çocuk ilişkileri için bir ağaç yapısı kullanır.

Ancak, Hiyerarşi penceresinin önceden tanımlanmış bir yapısı yoktur, oysa Keşif penceresi katı bir yapıya sahiptir. Keşif penceresini, Unity'nin Hiyerarşi ve Proje pencerelerinin bir kombinasyonu olarak düşünmek faydalı olabilir; Workspace klasörü en tanınabilir öğedir.

Benzer şekilde, Roblox Studio'nun Varlık Yöneticisi ve Araç Kutusu Unity Proje penceresi ile örtüşmektedir. Varlık Yöneticisi, oyununuz içindeki tüm varlıkları yönetmenizi sağlarken, Araç Kutusu yayımladığınız varlıklara erişmenizi sağlar. Araç Kutusu, Roblox veya topluluktan varlıklar için Yaratıcı Mağaza içinde arama yapmanıza da olanak tanır; bu, Unity Varlık Mağazası ile benzerdir.

Felsefi farklılıklar

Roblox, geleneksel bir oyun motoru yerine "simülasyon motoru"dur. Unity GameObjects ve Roblox Parts, 3D ortamda nesneler oluşturmak için temel yapı taşları olarak hizmet eder, ancak pratikte ikisi oldukça farklıdır:

  • Temsil: Unity'deki GameObjects, bir sahnedeki herhangi bir nesne için daha yüksek seviyeli bir kavramdır; oysa Roblox'taki Parts, soyut geometriyi temsil etmek yerine ahşap bloklar ve plastik küreler gibi fiziksel nesneleri temsil etmek için tasarlanmıştır.
  • Fizik: Unity'de fizik simülasyonları gerçekleştirmek için GameObject'e Rigidbody ve Collider gibi bileşenler eklersiniz. Roblox'ta, fizik Parts veri türüne entegre edilmiştir; motor etkileşimleri otomatik olarak yönetir.

Bir GameObject ve bir Part oluşturduğunuzda farkı hemen görebilirsiniz. GameObject sadece bir konum, dönüş ve ölçekten ibarettir. Part ise aynı bilgilere sahiptir—artı bir malzeme ve renk, yansıma ve saydamlık değerleri, kütle ve şekil gibi daha birçok bilgi. Bir Part'ı daha çok boş bir GameObject'e dönüştürmek, birçok yerleşik özelliği kaldırmayı gerektirir. Tersine, bir GameObject'e MeshFilter, MeshRenderer, Collider ve Rigidbody bileşenleri ekleyerek onu bir Part gibi görünür hale getirebilirsiniz.

Betikleme açısından, GameObject, Roblox Instance ile en çok benzeyen yapıdır; bu, diğer tüm Roblox sınıfları için temel sınıftır, ancak Instance türünde nesneler oluşturamayacağınız için karşılaştırma pek pratik değildir.

Bir diğer karşılaştırma, Unity GameObject ile Roblox Model arasındadır. Modeller, birçok GameObject arasında ebeveyn-çocuk ilişkisi kurduğunuz gibi, bir dizi birbirine bağlı parçayı içeren bir konteyner görevi görür. Modelin bir parçasını birincil parça olarak belirleyerek pivot noktasını tanımlarsınız. Modeller ayrıca betikler, animasyonlar, ses efektleri, istemler, kısıtlamalar, parçacık yayıcılar ve daha fazlasını barındırır.

Örneğin, bir Unity GameObject'inin ParticleSystem, Physics3D, SpringConstraint ve bir betik için bileşenleri olabilir. Hiyerarşi penceresinde, SpringyFireball adında tek bir GameObject görürsünüz. Denetçi penceresi, bileşenler ve özellikler koleksiyonunu gösterir.

Roblox'ta, Keşif penceresinde karşılık gelen bir SpringyFireball modeli şöyle görünebilir:

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

Roblox'un varsayılan olarak fizik felsefesi, 3D modeller oluşturma sürecine de uzanır. Roblox'ta, birden fazla parçayı bir montaj haline getirmek, hızlı bir şekilde şeyler inşa etmenin harika bir yoludur, çünkü Roblox, kaynak parçaları tek bir sert cisim olarak kabul eder. Bu yaklaşım Unity'de mevcut değildir.

Uzunluk ve kütle için standart metrik birimler yerine, Roblox, stud adı verilen varsayımsal birimler ve Roblox Kütle Birimleri (RMU) kullanır. Yaklaşık metrik dönüşümler ve kullanım önerileri için Birimler sayfasına bakın.

Konum önemlidir

Roblox oyunları varsayılan olarak çok oyunculudur, bu nedenle Roblox Studio, belirli davranışlara sahip birçok farklı depolama yeri içerir. Daha fazla bilgi için istemci-sunucu çalışma zamanı ve nesne organizasyonu sayfalarına bakın.

LocationDescription
WorkspaceOyunun 3D dünyasını temsil eder. Nesnelere doğrudan bağlanan ve davranışlarını kontrol eden sunucu betiklerini çalıştırabilir.
ReplicatedFirstHer şeyden önce istemciye çoğaltılan nesneleri içerir. Bu konum, bir yükleme ekranını görüntülemek için gerekli olan en az nesne ve istemci betiği seti için idealdir.
ReplicatedStorageHem istemciye hem de sunucuya çoğaltılan nesneleri içerir. Bu konum, Scripts için RunContext değeri Client olan, istemci ModuleScripts ve hem sunucuda hem de istemcide kullanmak istediğiniz ModuleScripts için idealdir. LocalScripts bu konumdan çalışmaz.
ServerScriptServiceSunucu betiklerini içerir. Bu konum, oyun mantığı ve bulut depolama gibi sunucu tarafı işlevselliğine veya nesnelerine erişmesi gereken betikler için idealdir.
ServerStorageSunucu tarafı nesnelerini içerir. Bu konum, bir oyuna katıldıklarında istemcilere hemen çoğaltılmasına gerek olmayan büyük nesneler için idealdir. Betikler bu konumdan çalışmaz, ancak burada sunucu tarafı ModuleScripts depolayabilirsiniz.
StarterPlayer ⟩ StarterCharacterScriptsKarakterin doğduğunda çalışan LocalScripts içerir.
StarterPlayer ⟩ StarterPlayerScriptsOyuncu oyuna katıldığında çalışan LocalScripts içerir.
StarterGuiİstemcinin oyunu yüklediğinde görüntülediği GUI öğelerini içerir. LocalScripts bu konumdan çalışabilir.
StarterPackGenellikle yalnızca Tools içerir, ancak oyuncu sırt çantalarını ayarlamak için LocalScripts da içerebilir.

Betikleme

Roblox oyunları, üç farklı Luau script türünü destekler:

  • İstemci scriptleri

    Bu scriptler istemcide çalışır ve sunucunun davranışları üzerinde herhangi bir görünürlüğü yoktur. Eski nedenlerden dolayı, bu scriptler LocalScripts veya Scripts biçiminde olabilir ve RunContext değerleri Client olmalıdır. İstemci scriptleri genellikle ReplicatedStorage, StarterPlayerScripts veya StarterCharacterScripts içinde yer alır.

  • Sunucu scriptleri

    Bu scriptler sunucuda çalışır ve istemcinin davranışları üzerinde herhangi bir görünürlüğü yoktur. Sunucu scriptlerinin RunContext değeri Server olmalıdır ve genellikle ServerScriptService içinde bulunur; bu içerik istemciye kopyalanmaz.

  • Modül scriptleri

    Bu scriptler, genellikle bir fonksiyon veya tablo (veya fonksiyonların bir tablosu) döndüren tekrar kullanılabilir kod parçalarıdır. Kodun, istemci ve sunucu scriptlerinde çoğaltılmasını önlemek için, iki taraf arasında kod ve veri paylaşmak için modül scriptlerini kullanın. Modül scriptleri genellikle ReplicatedStorage içinde yer alır, ancak istemci-sunucu sınırının aynı tarafındaki scriptler arasında kod paylaşmak istiyorsanız başka yerlerde de bulunabilir.

Unity, farklı betik türleri kavramına sahip değildir. Çok oyunculu bir oyun yapmayı seçerseniz, Unity, bir GameObject'in (ve onun betiklerinin) sunucuya özel olması gerektiğini belirtmek için ağ kütüphanelerini kullanır.

Unity'de, motorun işlevselliğinin çoğu MonoBehaviour yöntemleri aracılığıyla mevcuttur. Örneğin, render döngüsünden önce kod çalıştırmak için Update() yöntemine kod eklersiniz. Fizik çarpışma olaylarını işlemek için OnCollideEnter() yöntemine kod eklersiniz.

Roblox betikleri daha çok olay odaklıdır. Benzer işlevselliğe, hizmetlere abone olarak ve güncellemeleri dinleyerek erişirsiniz.

C# ve Luau

Betikleme için Unity C# kullanır. Roblox ise Luau, Lua 5.1'dan türetilmiş bir betik dili kullanır.

C# ile karşılaştırıldığında, Luau kısmen tipli ve genellikle daha az ayrıntılı bir sözdizimine sahiptir. Ancak, daha büyük projelerde, kısmi tipleme, C# gibi güçlü tipli dillerin kaçındığı hata kategorilerini ortaya çıkarabilir, bu nedenle Roblox betiklerinde katı tip kontrolünü etkinleştirmeyi düşünün.

Betik dilleri arasındaki temel sözdizimi farklılıkları için Luau ve C# karşılaştırması sayfasına bakın.

Luau kod örneği

Aşağıdaki Luau kod örneği, bir oyuncu bir olta takımı taktığında, kullanıcı girişlerini (bu durumda E tuşu) dinlemeyi ve ek fonksiyonları çağırmayı göstermektedir:

local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- ReplicatedStorage'dan tek bir fonksiyon döndüren bir modül betiği al
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Bu betiğin olta takımının çocuğu olduğu varsayılmaktadır
local fishingPole = script.Parent
local ACTION_CAST = "Cast"
-- Tuşun basılı olduğunu kontrol et, sonra başka bir fonksiyonu çağır
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- Sadece oyuncu olta takımını taktığında eylemi etkinleştir
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Oyuncu olta takımını çıkardığında eylemi devre dışı bırak
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)

Roblox betiği, Roblox'un birçok yerleşik varsayımına sahip olduğu için oldukça özlü olabilir: sunucuya bağlı bir Player ve Humanoid karakteri ve Tools ekipmanını kullanabilir. Bu varsayımlar Unity'de mevcut değildir, bu nedenle uygulama çok farklı olacaktır.

Varlıklar

Unity ve Roblox, özel 3D modeller ve mesh'ler içe aktarmayı destekler. Belirli varlık türleri, üçüncü taraf modelleme yazılımınızdan belirli yapılandırmalar ve dışa aktarma ayarları gerektirebilir. Daha fazla bilgi için aşağıdaki sayfalara bakın:

Unity'de, nesneler Proje penceresinde görünen Assets dizinine içe aktarılır. Roblox'ta, varlıklar Workspace'a ve Araç Kutusu veya Varlık Yöneticisi içine içe aktarılır.

Roblox ayrıca içe aktarma sürecini kolaylaştırmak için açık kaynaklı bir Blender eklentisi sunar.

Dönüşümler

Unity'in dönüşümleri ve Roblox'un CFrames 3D nesnelerin dönüşümlerini temsil etmede benzer amaçlara hizmet eder:

  • Hem dönüşümler hem de CFrames bir nesnenin 3D alandaki konumunu ve rotasını temsil eder. Dönüşümler ölçek içerirken, Roblox bir BasePart.Size özelliği kullanır ve bu özellik CFrame'in parçası değildir.
  • Her ikisi de karmaşık dönüşümler için çarpma desteği sunar ve diğer manipülasyonlar için yerleşik yöntemlere sahiptir.

İşbirliği

Unity'de, standart sürüm kontrol sistemleri veya Unity Sürüm Kontrolü gibi ücretli hizmetlerle işbirliği yaparsınız.

Roblox dosyaları bulutta yaşar (ancak kopyalarını dışa aktarabilirsiniz), bu nedenle Roblox Studio, eşzamanlı düzenleme, grup yönetimi, izinler, betik taslağı ve daha fazlası için yerleşik işbirliği iş akışları sağlar. İşbirliği sayfasına bakın.

Eklentiler

Unity araçlarına benzer şekilde, Roblox Studio, geliştirme sürecinin çeşitli yönleri üzerinde kontrol sağlamanızı veya basitleştirmenizi sağlayan eklenti desteği sunar. Eklentiler, varlıklar gibi Yaratıcı Mağaza'da mevcuttur; birçok ücretsizdir.

Sözlük

UnityRobloxNotlar
SahneYer
GameObjectPart veya ModelFelsefi farklılıklar sayfasına bakın.
PrefabPaket
DönüşümCFrameCFrame ölçek bilgisi içermez. Dönüşümler sayfasına bakın.
HiyerarşiKeşif
DenetçiÖzellikler
Sahne görünümü3D görünüm alanı
Oyun görünümü3D görünüm alanıGörünüm, oyununuzu test ettiğinizde bir oyun görünümüne geçer.
Proje penceresiVarlık Yöneticisi veya Araç Kutusu
Arazi DenetçisiArazi Editörü
Doğma noktasıSpawnLocation
KonsolÇıktı
Varlık MağazasıYaratıcı Mağaza
Üst katmanlarAraç Çubuğu
AraçEklenti
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.