Uinty3D'nin ana "pro" si hızlı bir şekilde deliriyor. Buradaki performanstan bahsetmiyorum, geliştirme hızından bahsediyorum. Var:
- Birleşik varlık boru hattı. Kaynak alt sistemi üzerinde zaman harcamanıza gerek yok, yazmak ve düzeltmek için buggy içe aktarma yordamları yok: sadece bir dosyayı klasöre bırakın ve işe yarıyor.
- Entegre seviye editörü. Seviye araçlarına zaman harcamanıza gerek yok: doğrudan işe koyulun.
- Harika ayarlamalar ve hata ayıklama desteği: tüm oyun değişkenleriniz oyun oynarken tam olarak gösterilir ve anında değiştirilebilir - ve tüm bunlar tek bir kod satırı yazmadan değiştirilebilir. İstediğiniz zaman oyunu duraklatın ya da bir seferde bir ifade ile adım atın.
- Hazır bileşenlerin oldukça kapsamlı anlaşılması. Rendering, ses, fizik, kontroller - birçok "kazan plakası" kodu zaten yazılmıştır.
- Bir komut dosyası sunucusu olarak Mono. Kişi bir dili C # 'nın yararları hakkında tartışabilirken, Mono'nun temel sınıf kütüphanesi birçok fonksiyon sunmaktadır. Koleksiyonlar, G / Ç, çok iş parçacıklı ve delice ifadeli LINQ, gelişimi önemli ölçüde hızlandırır.
Ayrıca, Unity3d, çoklu platformlarda gerçekten iyidir. Tabii ki, bir windows .exe oyunu oluşturamazsınız, ve sonra sihirli bir şekilde iPhone'da "sadece çalışmasını" sağlayamazsınız; ama Birlik buna oldukça yaklaşıyor. Gerekli olan “taşıma” dan daha fazla “ince ayar” yapmaktır.
Tabii ki, bazı durumlarda Unity3D ideal değildir. Unity'ye entegre ağ çok oyunculu, bazı LAN eşler arası oyun için uygun, ancak merkezi sunucu gerektiren herhangi bir şey, tüm ağ kodlarını sıfırdan yazmanızı gerektirir. Birliğin GUI sistemi oldukça ilginç ve yavaştır, bu nedenle oyun içi GUI'lerin karmaşık hale getirilmesi acı vericidir. Ancak, gördüğüm diğer tüm oyun GUI sistemleri de ağrılı, bu yüzden Unity'nin genel olarak o kadar da kötü değil.
Ve elbette Unity3D, OGRE gibi, sadece bir kütüphane / kaynak kodu sunan "oyun motorlarından" biraz daha az esnektir. Performansı tam anlamıyla birinci sınıf değil ve yalnızca bir komut dosyası çalıştırma alanınız olduğundan, onu geliştirmek için bazı akıllı düşük seviye kesmeleri kullanamazsınız. Örneğin, Unity'nin yerleşik ağaç oluşturucusu sizi bir nedenden ötürü tatmin etmiyorsa, kendinize ait olanı yazamazsınız (peki, olabilir, ancak senaryolarla çalışıyor olabilir ve büyük olasılıkla çok yavaş ve çok fazla güçlük çeker) ). Yine de, bir miktar performans kaybetme sakıncası yoksa, Unity ile ilgili herhangi bir şeyi yapmak mümkündür.
Unity3D'nin en büyük "con", kaynak kontrolüdür. Daha önce de belirtildiği gibi, Unity'nin kendi Asset Server'ı oldukça pahalı. Ve gerçekten çok zor berbat. Dallanma bile yok. Unity3D, 3. parti SCM sistemlerini teorik olarak desteklerken, bunların kullanımı da tehlike altındadır. SVN onaylandıktan sonra içe aktarma ayarlarının "sihirli bir şekilde" değiştiğini gördüm veya performans gösterdikten sonra tüm nesnelerin parametreleri kayboluyor. Bütün bunlar çalışılabilir, ancak yine de, Unity3D + Kaynak kontrolü = ağrı.
Yani, aslında sorunuzu cevaplamak için. Unity3D'nin "küçük" bir oyun için en iyisi, en iyisi değilse de oyun motoru seçimi olduğuna inanıyorum . Özellikle prototip aşamasında.
Bununla birlikte, eğer bir eğitim projesinden bahsediyorsak, 'aleyhine tavsiye ederim. Oyunların nasıl çalıştığını öğrenmek için bir tanesini olabildiğince düşük bir seviyeye yazmak daha iyidir. Oyun motorları harika bir araçtır; ancak maksimum kazanç için kullanmak için nasıl çalıştıklarını ve neden bu şekilde çalıştıklarını anlamak gerekir . Ve bunu öğrenmenin en iyi yolu, kendi oyun motorunuzu yazmak - sonunda berbat olsa bile.