crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
Unity ile C#: Oyun Programlamanın Temel Prensipleri
Unity'de oyun geliştirmek, sadece kod yazmak değil; yazdığınız C# kodlarını sahnede gördüğünüz nesnelere (GameObject) can vermek için kullanmaktır. Unity'de C#, bir "Scripting" (Senaryolaştırma) dili olarak görev yapar.
1. Temel Kavram: MonoBehaviour
Unity'de yazdığınız her C# sınıfı varsayılan olarak MonoBehaviour sınıfından miras alır. Bu sınıf, oyunun yaşam döngüsüne (Lifecycle) erişmenizi sağlayan özel metotlar sunar.
[]Start(): Oyun başladığında (nesne oluşturulduğunda) sadece bir kez çalışır. İlk ayarlar burada yapılır.
[]Update(): Her karede (frame) bir kez çalışır. Karakterin hareketi veya klavye girişleri burada kontrol edilir.- FixedUpdate(): Fizik hesaplamaları (yerçekimi, çarpışma) için kullanılır.
C#:
using UnityEngine;
public class OyuncuKontrol : MonoBehaviour
{
public float hiz = 5.0f;
void Update()
{
// Klavyeden sağ-sol girişini al
float hareket = Input.GetAxis("Horizontal");
// Nesneyi hareket ettir
transform.Translate(Vector3.right * hareket * hiz * Time.deltaTime);
}
}
2. Nesnelere Erişim ve Bileşen (Component) Mantığı
Unity "Component-Based" bir sistemdir. Bir nesnenin rengini değiştirmek için Renderer bileşenine, havaya zıplatmak için Rigidbody (fizik) bileşenine kodla erişmeniz gerekir.
C#:
Rigidbody rb;
void Start() {
// Nesnenin üzerindeki Rigidbody bileşenini yakala
rb = GetComponent<Rigidbody>();
}
void Ziplat() {
rb.AddForce(Vector3.up * 500);
}
3. Yeni Başlayanlar İçin Altın İpuçları
[]Time.deltaTime Kullanın: Update içinde hareket kodları yazarken hızı Time.deltaTime ile çarpmayı unutmayın. Bu, oyunun saniyede 30 kare alan bilgisayarda da 144 kare alan bilgisayarda da aynı hızda çalışmasını sağlar.
[]SerialField Özelliği: Değişkenlerinizi private tutup ama Unity editöründen değiştirmek istiyorsanız başına [SerializeField] ekleyin. Bu, kapsülleme (encapsulation) kuralları için daha sağlıklıdır.- Fizik İşlemleri:** Nesnelerin birbirine çarpmasını istiyorsanız en az birinde Rigidbody ve her ikisinde Collider bileşeni olduğundan emin olun.
4. Unity vs. Standart C#: Farklar Neler?
| Özellik | Standart C# (.NET) | Unity C# |
|---|---|---|
| Giriş Noktası | Main() metodu | Start() veya Awake() metotları |
| Hata Ayıklama | Console.WriteLine() | Debug.Log() |
| Bellek Yönetimi | Garbage Collector (GC) | GC (Ancak FPS düşüşü için manuel optimizasyon şart) |
Sonuç
Unity ile C# öğrenmek, yazdığınız kodun saniyeler içinde ekranda hareket ettiğini, zıpladığını veya patladığını görmek demektir. Bu görsel geri bildirim, öğrenme sürecini çok daha keyifli hale getirir. C# temellerine hakimseniz, Unity'nin sınıflarını (API) öğrenmek sadece birkaç haftanızı alacaktır.