Unity: temel bilgiler, mimari ve C# geliştirme

Yazar: IT Sectr Yayınlanma: 2026-05-02 Okuma süresi: 9 dk

Unity, 2D ve 3D uygulamalar oluşturmak için kullanılan, mobil platformlar, masaüstü ve konsollar için derleme desteği sunan çapraz platform oyun motorudur. Hem oyun geliştirme hem de mimari, otomotiv ve perakende alanlarındaki oyun dışı uygulamalar için kullanılır. Unity Technologies, 2025 verilerine göre, App Store ilk 1000'deki mobil oyunların %70'inden fazlası Unity ile oluşturulmuştur. C#, motorun birincil programlama dilidir ve oyun mantığı, bileşenler ve editör betikleri bu dille yazılır.

Anahtar Noktalar

  • Unity — 2D, 3D, AR ve VR desteği sunan çapraz platform oyun motoru
  • C# — oyun mantığı, bileşenler ve editör betikleri için birincil dil
  • Bileşen mimarisi — nesnelerin davranışı bileşenlerden (MonoBehaviour) oluşturulur
  • Asset Store — hazır modeller, dokular, sesler ve eklentiler için pazar yeri
  • Mobil derleme — ARM mimarisi için optimize edilmiş iOS ve Android derlemeleri

Unity nedir?

Unity, Unity Technologies tarafından 2005 yılında oluşturulmuş bir oyun ve gerçek zamanlı uygulama geliştirme ortamıdır. Motor, iOS, Android, Windows, macOS, PlayStation, Xbox, Nintendo Switch ve WebGL dahil 27 platformu destekler. Unity Gaming Report (2024) raporuna göre, 2023 yılında Unity üzerinde aylık 3 milyardan fazla mobil oyun yayınlanmıştır.

Unity'nin temel özelliği, bileşen odaklı mimarisidir. Sahnedeki her nesne, içine davranışını belirleyen bileşenlerin (render, fizik, ses, animasyon ve özel mantık) eklendiği boş bir kapsayıcıdır (GameObject). Bu, Unity'yi davranışın sınıf kalıtımıyla belirlendiği Unreal Engine gibi hiyerarşik motorlardan ayırır.

Statista (2025) verilerine göre Unity, mobil oyun motoru pazarının %48'ine sahiptir ve Unreal Engine (%15) ile özel çözümleri (%37) geride bırakmaktadır. Bağımsız stüdyolar düşük giriş engeli nedeniyle, büyük yayıncılar ise farklı platformlarda derleme hattının esnekliği için motoru seçer.

Unity mimarisi: sahneler, nesneler ve bileşenler

Unity mimarisi dört temel kavram üzerine kuruludur: sahneler, GameObjects, bileşenler ve prefab'lar. Bu hiyerarşiyi anlamak, motorla etkili bir şekilde çalışmak için gereklidir.

Sahneler ve GameObjects

Scene, bir oyun seviyesi veya uygulama durumundaki tüm nesneleri içeren bir kapsayıcıdır. Her sahnenin kendine ait GameObjects, ışık kaynakları, kameralar ve ses kaynakları kümesi vardır. Sahneler arası geçiş SceneManager.LoadScene() ile yapılır.

GameObject, Unity'nin temel yapı taşıdır. Varsayılan olarak görsel temsili veya davranışı yoktur — sahne hiyerarşisinde boş bir düğümdür. Tüm davranış ve görünüm bileşenler aracılığıyla eklenir. Örneğin, GameObject'i görünür yapmak için MeshRenderer eklenir; fiziğe uyması için Rigidbody eklenir.

MonoBehaviour bileşenleri

MonoBehaviour, Unity'deki tüm özel betikler için temel sınıftır. Bir yaşam döngüsü sağlar: Awake (nesne yüklendiğinde çağrılır), Start (ilk kareden önce), Update (her kare), FixedUpdate (her fizik adımı) ve OnDestroy (yok edildiğinde).

Her bileşen, GetComponent<T>() ile aynı GameObject üzerindeki diğer bileşenlerle etkileşime girebilir. Bu, modüler sistemler oluşturmayı sağlar: örneğin, Health bileşeni Movement bileşeninden bağımsız olabilir, ancak her ikisi de UnityEvent aracılığıyla olaylara yanıt verebilir.

Prefab'lar

Prefab, projede bir varlık olarak kaydedilmiş GameObject şablonudur. Prefab'daki değişiklikler, sahnelerdeki tüm örneklerine otomatik olarak uygulanır. Bu, Unity'deki merkezi yeniden kullanım mekanizmasıdır ve yinelemeleri hızlandırıp hataları azaltır.

Prefab'lar iç içe geçmeyi (Nested Prefabs) destekler: bir prefab, başka prefab'lar içerebilir ve bir hiyerarşi oluşturabilir. Örneğin, bir araba prefab'ı, her biri kendi bileşenleri ve ayarlarıyla tekerlek, motor ve gövde prefab'larını içerebilir.

Unity'de C# kod örnekleri

C# ile temel bir karakter hareket bileşenine bakalım. Bu betik, bir nesneyi mevcut dönüşüne göre ileri doğru hareket ettirir ve kullanıcı girişini işler.

csharp
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float speed = 5f;

    void Update()
    {
        float move = Input.GetAxis("Vertical");
        Vector3 direction = transform.forward * move;
        CharacterController controller = GetComponent<CharacterController>();
        controller.SimpleMove(direction * speed);
    }
}

Update() yöntemi her karede çağrılır. Input.GetAxis dikey girişi okur, SimpleMove hareketi fizikle uygular. CharacterController, çarpışma fiziği yazmaya gerek kalmadan çarpışmaları yöneten yerleşik bir Unity bileşenidir.

Çarpışmaları yönetmek ve hasar uygulamak için örnek betik:

csharp
using UnityEngine;

public class DamageHandler : MonoBehaviour
{
    public int health = 100;

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Enemy"))
        {
            health -= 10;
            if (health <= 0)
            {
                Destroy(gameObject);
            }
        }
    }
}

OnCollisionEnter yöntemi, bir GameObject başka bir nesneyle çarpıştığında fizik motoru tarafından çağrılır. Etiket karşılaştırması (CompareTag), çarpışmanın neyle olduğunu belirler. Bu yaklaşım, kodu değiştirmeden DamageHandler bileşeninin oyuncu, düşmanlar ve yok edilebilir nesneler için yeniden kullanılmasını sağlar.

Unity'de mobil oyun geliştirme

Unity, sınırlı kaynaklara sahip mobil cihazlarda oyunları optimize etmek için özel araçlar sunar. Ana optimizasyon alanları arasında bellek yönetimi, draw call'ların azaltılması ve farklı ekran çözünürlüklerine uyum sağlama bulunur.

Performans optimizasyonu

Mobil platformlar için Unity, Asset Bundles sunar — kaynakları ihtiyaç halinde yükleyen ve uygulamanın ilk boyutunu azaltan bir içerik paketleme sistemi. Bu, özellikle uygulama mağazası sınırlamaları nedeniyle tüm varlıkların aynı anda yüklenmesinin mümkün olmadığı, çok sayıda seviye veya karakter içeren oyunlar için önemlidir.

Unity Profiler, ADB (Android) veya USB (iOS) aracılığıyla gerçek bir cihazda CPU, GPU ve bellek kullanımını analiz etmeyi sağlar. Unity Documentation (2025) verilerine göre, mobil cihazlarda draw call'ları 100–300'e optimize etmek, orta segment cihazlarda istikrarlı 60 FPS sağlar.

Dokunmatik giriş ve kullanıcı arayüzü

Mobil oyunlar için Unity, dokunmatik kontrolleri, ivmeölçeri ve jiroskopu tek bir API altında soyutlayan Input System'i kullanır. Sanal joystick'ler, kaydırmalar ve dokunmalar, dokunma işleme kodu yazmadan Input Action Assets aracılığıyla yapılandırılır.

Unity'nin UI sistemi (uGUI), farklı ekran en-boy oranlarına otomatik olarak uyum sağlamak için Canvas Scaler'ı destekler. Scale With Screen Size modundaki Canvas Scaler bileşeni, tabletlerde ve akıllı telefonlarda düğmelerin ekran dışına çıkmamasını sağlar.

iOS ve Android için derleme

Unity'de mobil oyun derlemesi, Build Settings penceresi aracılığıyla yapılır. Android için Android SDK ve NDK gerekir; Unity, APK veya AAB'ye derlenen bir Gradle projesi oluşturur. iOS için Xcode gerekir — Unity, Apple aracılığıyla derlenen Objective-C/Swift sarmalayıcısına sahip bir Xcode projesi oluşturur.

IL2CPP, C# kodunu C++'a ve ardından yerel ARM koduna çeviren bir derleme seçeneğidir. Unity Benchmark (2024) verilerine göre IL2CPP, Mono'ya kıyasla iOS ve Android'de performansı %15–25 artırır, ancak derleme süresini ve ikili dosya boyutunu artırır.

Unity'nin diğer motorlarla karşılaştırılması

Unity, oyun motoru pazarındaki ana alternatifler olan Unreal Engine ve Godot ile karşılaştırılır. Seçim, proje türüne, ekibin niteliklerine ve hedef platformlara bağlıdır.

KriterUnityUnreal Engine 5Godot 4
DilC#C++ / BlueprintsGDScript / C#
GrafikBuilt-in / URP / HDRPNanite + LumenÖzel renderleyici
Mobil optimizasyonMükemmel (mobil oyunların %70'i)İyi (AAA taşıma)İyi (hafif motor)
Giriş engeliDüşükYüksekDüşük
LisansPersonal / Pro / Enterprise%5 telif (1 milyon $'a kadar)MIT (ücretsiz)

Mobil oyunlar için Unity, sınırlı bilgi işlem gücüne sahip mobil GPU'lar için grafikleri optimize eden esnek render sistemi (URP — Universal Render Pipeline) sayesinde sektör standardı olmaya devam etmektedir. URP, render geçişi sayısını otomatik olarak azaltır ve GPU yükünü düşürmek için shader'ları toplar.

Unreal Engine 5 en iyi grafik kalitesini (geometri için Nanite, aydınlatma için Lumen) sunar ancak daha güçlü donanım ve daha fazla ekip deneyimi gerektirir. Godot, açık kaynak kodu ve küçük motor boyutuyla cezbeder ancak daha az hazır varlık ve daha küçük bir uzman pazarına sahiptir.

Oyun dışı uygulamalar için Unity

Unity, oyun geliştirme dışında mimari, otomotiv, perakende ve eğitim alanlarında aktif olarak kullanılmaktadır. Gerçek zamanlı 3D görselleştirme (RT3D), etkileşimli 3D sunumlar, simülatörler ve ürün yapılandırıcıları oluşturmayı sağlar.

Otomotiv endüstrisinde Unity, araçların dijital ikizlerini ve HMI (Human-Machine Interface) sistemlerini oluşturmak için kullanılır. Mercedes-Benz ve BMW, fiziksel bir prototip üretilmeden önce gösterge paneli ve multimedya sistemlerinin prototiplenmesi için Unity kullanır.

Perakendede Unity, ürün yapılandırıcılarında kullanılır: IKEA (sanal mobilya yerleştirme), Nike (ayakkabı kişiselleştirme) ve Audi (araç yapılandırıcı) — tüm bu projeler Unity üzerine inşa edilmiştir. Kullanıcı, gerçek zamanlı olarak renkleri, malzemeleri ve donanımı değiştirebilir ve sonucu 3D olarak görebilir.

Oyun dışı projeler için Unity özel araçlar sunar: AR Foundation (ARKit ve ARCore için), Pixyz Plugin (CAD model içe aktarma için) ve Unity Reflect (Revit BIM modelleriyle senkronizasyon için). Şirket, kurumsal müşteriler için bulut hizmetlerini içeren Unity Industry yönünü aktif olarak geliştirmektedir.

Sıkça sorulan sorular

Bir acemi için Unity'de çalışmayı öğrenmek zor mu?

Unity, kapsamlı dokümantasyonu, ücretsiz Unity Learn kursları ve devasa topluluğu sayesinde yeni başlayanlar için en erişilebilir oyun motorlarından biri olarak kabul edilir. Başlamak için C# temellerini bilmek ve bileşen mimarisi ilkelerini anlamak yeterlidir. Çoğu yeni başlayan, ilk oyununu 2–3 ay içinde oluşturur.

Unity'de 2D oyunlar oluşturulabilir mi?

Evet, Unity tam bir 2D hattına sahiptir: Sprite Renderer, 2D Fizik (Box2D), kutucuklardan seviyeler oluşturmak için Tilemap ve sprite'ların iskelet animasyonu için 2D Animation. Hollow Knight ve Cuphead dahil birçok popüler 2D oyun Unity ile oluşturulmuştur. 2D araçları, eklenti yüklemeye gerek kalmadan motora entegre edilmiştir.

Mobil geliştirme için Unity'nin maliyeti nedir?

Unity Personal, yıllık geliri 200.000 $'a kadar olanlar için ücretsizdir. Unity Pro, geliştirici başına yıllık 2.040 $'dır ve gelişmiş profil oluşturma araçları, bulut derlemesi ve öncelikli destek içerir. Mobil geliştirme için Personal'ın işlevselliği çoğu bağımsız proje için yeterlidir.

Unity, Cocos2d oyun motorundan nasıl farklıdır?

Cocos2d, C++, Lua ve JavaScript'i destekleyen, basit 2D oyunlara odaklanmış bir 2D çerçevedir. Unity, düzenleyici, görsel araçlar ve 27 platform desteğine sahip tam teşekküllü bir 3D/2D motorudur. Cocos2d Asya'da hiperkäsü oyunlar için popülerdir, Unity ise her tür için evrensel bir seçimdir.

Unity AR ve VR'yi destekliyor mu?

Evet, Unity, AR Foundation (ARKit + ARCore), XR Interaction Toolkit ve OpenXR aracılığıyla AR ve VR için yerleşik desteğe sahiptir. Half-Life: Alyx (teknik demo) ve VRChat gibi VR projeleri Unity ile oluşturulmuştur. Motor, Meta Quest, HTC Vive, Valve Index ve PlayStation VR dahil tüm büyük VR başlıklarını destekler.

Özet

  • Unity — C# ile 2D/3D oyunlar ve gerçek zamanlı uygulamalar için çapraz platform motoru
  • Mimari sahneler, GameObjects, MonoBehaviour bileşenleri ve prefab'lar üzerine kuruludur
  • C# — oyun mantığı, bileşenler ve düzenleyici uzantıları için tek dil
  • Mobil optimizasyon — iOS ve Android için IL2CPP, Asset Bundles, URP ve Profiler
  • Karşılaştırma — Unity mobilde lider (%48), Unreal AAA'da, Godot bağımsızda
  • Oyun dışı kullanım — mimari, otomotiv, perakende ve etkileşimli 3D sunumlar
  • Giriş engeli — düşük, ücretsiz Unity Learn kursları ve devasa topluluk

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun