Unity’de public ve [SerializeField] Farkı: Encapsulation ve Inspector
Unity’de public alan ve [SerializeField] private alan farkını; encapsulation, serialization ve Inspector kullanımıyla öğrenin.

public ve SerializeField farkı konusu yalnız tek bir ayar veya araçtan ibaret değildir. Unity’de bir alanı Inspector’da göstermek için public yapmak zorunlu değildir. [SerializeField] private alanı serialize ederek Inspector’da düzenlenebilir tutarken kod dışından doğrudan erişimi engeller.
Bu rehberin amacı, public ve SerializeField farkı için uygulanabilir bir yöntem oluşturmak; hangi durumda hangi seçeneğin kullanılacağını, yaygın hataları ve sonucu nasıl doğrulayacağınızı açıklamaktır. Böylece yalnız aracı tanımak yerine kararın nedenini ve sonuç üzerindeki etkisini de değerlendirebilirsiniz.
Encapsulation
private alan sınıfın iç durumunu korur. Değer değişiminin kontrollü yapılması gerekiyorsa property veya metod kullanın.
Pratik yaklaşım: Bu adımı uygularken mevcut durumu not edin ve değişikliği tek seferde çok sayıda ayarla birlikte yapmayın. “Encapsulation” bölümündeki kararın etkisini ayrı ayrı gözlemlemek, bir sorun oluştuğunda kaynağı daha hızlı bulmanızı sağlar. Özellikle gerçek proje üzerinde çalışıyorsanız geri dönüş imkânını koruyacak şekilde ilerlemek daha güvenlidir.
Serialization
Unity’nin serialize edebildiği alan türlerinde [SerializeField] ile Inspector değeri sahne/prefab verisine yazılır. Runtime’da property setter çağrılmadan değer deserialize edilebilir.
Pratik yaklaşım: Bu adımı uygularken mevcut durumu not edin ve değişikliği tek seferde çok sayıda ayarla birlikte yapmayın. “Serialization” bölümündeki kararın etkisini ayrı ayrı gözlemlemek, bir sorun oluştuğunda kaynağı daha hızlı bulmanızı sağlar. Özellikle gerçek proje üzerinde çalışıyorsanız geri dönüş imkânını koruyacak şekilde ilerlemek daha güvenlidir.
public ne zaman?
Başka sınıfların doğrudan erişmesi gerçekten API’nin parçasıysa public anlamlı olabilir. Sırf Inspector görünürlüğü için public kullanmayın.
Pratik yaklaşım: Bu adımı uygularken mevcut durumu not edin ve değişikliği tek seferde çok sayıda ayarla birlikte yapmayın. “public ne zaman?” bölümündeki kararın etkisini ayrı ayrı gözlemlemek, bir sorun oluştuğunda kaynağı daha hızlı bulmanızı sağlar. Özellikle gerçek proje üzerinde çalışıyorsanız geri dönüş imkânını koruyacak şekilde ilerlemek daha güvenlidir.
Validate
Inspector’dan girilen değerler için OnValidate, Range/Min gibi attribute’lar veya custom editor doğrulaması kullanın.
Pratik yaklaşım: Bu adımı uygularken mevcut durumu not edin ve değişikliği tek seferde çok sayıda ayarla birlikte yapmayın. “Validate” bölümündeki kararın etkisini ayrı ayrı gözlemlemek, bir sorun oluştuğunda kaynağı daha hızlı bulmanızı sağlar. Özellikle gerçek proje üzerinde çalışıyorsanız geri dönüş imkânını koruyacak şekilde ilerlemek daha güvenlidir.
public ve SerializeField farkı için uygulama kontrol listesi
- Encapsulation adımı proje koşullarına göre kontrol edildi.
- Serialization adımı proje koşullarına göre kontrol edildi.
- public ne zaman? adımı proje koşullarına göre kontrol edildi.
- Validate adımı proje koşullarına göre kontrol edildi.
- Değişiklik öncesi mevcut durum kaydedildi ve karşılaştırma için referans oluşturuldu.
- Masaüstü/mobil veya hedef platform davranışı gerçek kullanım senaryosunda test edildi.
- Sonuç yalnız görsel olarak değil, işlev ve hata senaryoları açısından da doğrulandı.
Yaygın Hatalar ve Nedenleri
- Inspector görünürlüğü için tüm alanları public yapmak.
- Serialize edilmiş alan adını değiştirdiğinizde veri göçünü düşünmemek.
- Runtime hesaplanan geçici veriyi gereksiz serialize etmek.
Bu hataların ortak noktası, aracı tek başına çözüm olarak görmek ve bağlamı göz ardı etmektir. public ve SerializeField farkı uygulamasında doğru sonuç; proje yapısı, kullanılan sürüm, hedef platform ve mevcut bileşenlerle birlikte değerlendirme yapıldığında ortaya çıkar. Kısa yoldan tüm seçenekleri aynı anda değiştirmek, hatanın hangi adımdan kaynaklandığını gizleyebilir.
Sonucu Nasıl Doğrulamalısınız?
Unity tarafında yalnız Editor içindeki başarılı sonuç yeterli değildir. İlgili davranışı gerçek hedef cihazda veya hedef platform build’inde de test edin. Sahne yeniden yükleme, GameObject enable/disable, farklı çözünürlük ve performans koşulları gibi yaşam döngüsü senaryolarını kontrol edin. Kod veya Inspector ayarı değiştiğinde Prefab override ve serialized veri davranışını ayrıca doğrulayın.
Kontrol sırasında yalnız “çalışıyor” sonucuyla yetinmeyin. İlgili özelliği normal kullanımın yanında en az bir hata veya sınır senaryosuyla deneyin. Değişiklikten sonra beklenmeyen davranış oluşuyorsa son yapılan adımı geri alıp tekrar test edin. Bu yöntem, public ve SerializeField farkı için daha güvenilir ve tekrarlanabilir bir çalışma akışı oluşturur.
Sık Sorulan Sorular
Public ve serializefield farkı neden önemlidir?
Çünkü konu yalnız görünüm veya tek bir teknik ayar değildir; doğru uygulama, bakım kolaylığı, performans, kullanılabilirlik veya çıktı kalitesi gibi projenin devamındaki sonuçları doğrudan etkileyebilir. Bu nedenle kararın amacı ve doğrulama ölçütü baştan belirlenmelidir.
En sık yapılan hata nedir?
En sık görülen sorunlardan biri “Inspector görünürlüğü için tüm alanları public yapmak.” yaklaşımıdır. Bunun yerine değişiklikleri küçük adımlarla uygulamak, her adımın sonucunu kontrol etmek ve gerektiğinde geri dönebilecek bir çalışma düzeni kullanmak daha güvenlidir.
Uygulamanın doğru çalıştığını nasıl anlarım?
public ve SerializeField farkı için başarı ölçütünü önceden belirleyin. İlgili özelliğin gerçek kullanım senaryosunda doğru davranması, hata üretmemesi ve hedef çıktı üzerinde beklenen sonucu vermesi gerekir. Mümkün olduğunda farklı ekran, dosya, sahne veya içerik örnekleriyle tekrar test yapın.
Sonuç
public ve SerializeField farkı için en sağlıklı yaklaşım, aracı ezberlemek yerine hangi problemi çözdüğünü ve hangi koşullarda doğru çalıştığını anlamaktır. SerializeField, Inspector kolaylığını encapsulation ile birlikte korumak için en sık kullanılan Unity araçlarından biridir.
İlgili diğer rehberler için ASLAN TASARIM blog arşivini inceleyebilirsiniz. Teknik ayrıntıları sürüme göre doğrulamak için Unity Manual ve Scripting API dokümantasyonunu kontrol edin.



