Unity ile yapılan oyunlar nesne yönelimli mi?

filozofunpiri

Decapat
Katılım
13 Temmuz 2022
Mesajlar
117
İnternetteki videolara bakarak dönem projesi yapacağım. Unity ile kullanılan projeler nesne yönelimli olup olmadığını nasıl anlarım?
 
C# ile geliştirildiği için nesneye yönelimli bir dil ile geliştirilmiyor oluyor. Nesneye yönelik programlama kurallarına uygun geliştirilip geliştirilmemesi ise apayrı bir konu. Unity özelinde konuşursak yazdığınız oyunun parçalarını ayrı ayrı asset haline getirebiliyorsanız yeterince nesneye yönelik bir şekilde geliştirmişsinizdir denebilir.

Örneğin kendi geliştirdiğiniz bir karakter kontrolcüsü var. Bunu oyunun diğer parçalarından yeterince soyutlayabilirseniz export edip yeni bir projede kullanabilirsiniz. Bu da NYP kurallarına belli ölçüde uyduğunuz anlamına gelebilir. Karakter kontrolcüsünün içine oyuna özel kod yazarsanız, oyunun diğer parçalarına karakter kodundan erişirseniz bunu yapamazsınız mesela. Bu sefer oyuna özel kodu karakter kontrolcüsünün içine yazmışsınız NYP prensiblerini çiğnemişsiniz anlamına gelir.

Bunun olmaması için doğrudan erişim yerine ara nesneler ile veri aktarımı yapıp event, delegate gibi c# özellikleri kullanarak haberleşme sağlamanız gerekiyor. Bence orta ölçek bir oyun için çok takılmaya gerek yok. NYP kuralları belli ölçüde esnetebilir. Modüler kod yazmak için yine Unity'ye özel ScriptableObject, UnityEvent gibi yapılardan da faydalanılabilir.

Bunlar pratikte kodun bakımını kolaylaştırsa da oyun kalitesine doğrudan bir etkisi olmayacaktır. Ekip olarak çalışmıyorsanız en ideal şekilde kod yazmalıyım gibi bir hedefiniz olmasa da olur. Özellikle proje küçükken bu kurallara uygun kod yazmaya çalıştığınızda kodu gereksiz uzatıyor hatta takibini zorlaştırıyormuşuz gibi gelebiliyor. NYP'ye uygun modüler kod yazmak zaten temelde kodu birbirinden bağımsız parçalara bölmek anlamına geldiği için kodun takibi doğal olarak zorlaşıyor. Bu da hata ayıklamayı vs. zorlaştırıyor. Bu nedenle her proje için en uygun yolun NYP kurallarına katı bir şekilde uymak olduğunu vs. düşünmeyin. Temel mantığı öğrenmek önemli ama gerektiğinde kuralları esnetmek, proje özelinde kendi kurallarını koymak bence daha mantıklı.
 
Son düzenleme:
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…