Unity3D, ne kadar kod yazıyorsunuz? [kapalı]


16

Unity3D'de oyun oluştururken iş akışını bilmek ister misiniz?

Sizin için çok fazla kod oluşturuyor mu?

Anladığım kadarıyla, oyunu Unity'de tanımlıyorsunuz ve mantığı yapmak için arka tarafta komut dosyası yazıyorsunuz. Kuklaları tanımlamak için Unity ve kukla ustası olarak bir betik dili kullanıyorsunuz.



2
Bu soruyu UnityAnswers'e göndermek isteyebilirsiniz . Daha çok birlik merkezli olduğu için çok daha iyi yanıtlar alacaksınız
Joe the Person

Yanıtlar:


18

Unity3D, bir oyun motoru ve (oldukça temel) bir 3D editörden oluşur. Ağlar, dokular, gölgelendiriciler, arazi, kameralar, animasyonlar, parçacık sistemleri, ses örnekleri ve video oyunlarında yararlı olan diğer nesne türlerini sağlar. Bu içerir PhysX (Nvidia ait tescilli bir fizik motoru) ve Mono (Common Language Runtime, nam NET açık kaynak uygulaması).

Bunun ne kadarını kullanmak size kalmış. Tüm veri yapılarınızı Unity nesneleri olarak temsil edebilir, dünyanızı Unity'nin editöründe oluşturabilir, fiziği açabilir ve olayların en az komut dosyasıyla yoluna devam etmesine izin verebilirsiniz. Alternatif olarak, fizik motorunu kapatabilir, dünyanızı algoritmik olarak oluşturabilir ve nesnelerin tüm davranışlarını ve fiziğini açıkça programlayabilirsiniz.

Davranışı tamamen Mono'da (C #, JavaScript veya Boo dillerinden birini kullanarak) programlamayı seçebilir veya başka bir dilde yazabilir ve Unity projenize bağlayabilirsiniz. (Oyun nesneleriyle gerçek entegrasyon Mono üzerinden yapılmalıdır, ancak isterseniz oldukça ince bir katman olabilir.)

İş akışı, herhangi bir oyun motoruyla aynıdır. Sanatçılar modeller, dokular ve animasyonlar, ses uzmanları sesler çıkarır, programcılar gölgelendiriciler ve davranışlar yazarlar.

Birlik programcı topluluk hem çok yararlıdır answers.unity3d.com ve forum.unity3d.com . (Ve belki burada Stack Exchange'de?)

Bunu öğrenmenin en iyi yolu denemektir : temel sürüm ücretsizdir ve "Pro" sürümü için 30 günlük deneme süresi elde edersiniz.


6

Unity3D, 'sürükle ve bırak' oyun motorundan çok bir sarıcı / kütüphane. Kod oluşturmaz ve 'hazır' komut dosyalarıyla birlikte gelmez.

Örneğin, Unreal'da varsayılan bir birinci kişi kamerası, karakter denetleyicisi, çarpışma algılama ve AI bulunur.

Unity3D'de bunların hiçbiri yok. Unity3D'den aldığınız şey bir oyun döngüsü, bileşen tabanlı varlık sistemi, kapsamlı bir matematik kütüphanesi, medya yüklemek, kafeslerin işlenmesi, kamera, anında mod GUI, gölgelendiriciler, boru hattı oluşturma ve diğer düşük seviyeli işlevselliktir. Artı güzel bir editör. Sadece üst düzey işlevsellik hakkında endişelenmeniz gerekiyor. Örneğin, yine de kendi birinci kişi kameranızı kodlamanız gerekir (varsayılan kamerayı kullanmıyorsanız). Bununla birlikte, vektörleri ve benzerlerini hesaplamakla uğraşmanıza gerek yoktur.

Unity3D oyununuz için herhangi bir kod oluşturmaz, kesinlikle (Daha doğru olmak için oyununuzu çalıştırmak için kod üretir, ancak oyununuz için hiçbiri yoktur)

Oyununuzu tanımlamak için API'yı kullanmanız gerekecektir. Unity3D ile gelen örneklere bakabilir ve bu kodu yeniden kullanabilirsiniz; önceden tanımlanmış birkaç komut dosyası vardır, ancak genellikle bunları gereksinimlerinizi karşılayacak şekilde özelleştirmeniz gerekir.

Oyunu komut dosyası oluşturarak oluşturursunuz; davranışlar için komut dosyaları yazar, düzeyi Unity3D'de tasarlar ve bu davranışları varlıklara (veya oyun nesnelerine) atarsınız. Çok esnektir, ancak yine de bir oyun yazmak için çaba gerektirir. 3D için Flash ile karşılaştırırdım.


1
Bu ifade yanlış: "Unreal varsayılan bir birinci şahıs kamera, karakter denetleyicisi, çarpışma algılama ve AI var. Unity3D bunlardan hiçbiri yok"
jcurrie33

8
Aslında, Unity yerleşik tüm bu işlevsellikler için bileşenler ve daha birçok indirilebilir eklentiler içerir. Özel işlevsellik elde etmek için özelleştirmeniz ve kodlamanız gerekir, ancak bu bileşenlerin bir kombinasyonu ile tamamen işlevselliğe çok yakın olabilirsiniz. Unreal kadar etli değil, çünkü işlevsel bir silahla başlamıyorsunuz, ancak kişisel olarak Unity'de genel olarak (FPS olmayan) bir oyun almanın daha kolay olduğunu düşünüyorum. Bunun birçoğu anlambilimdir - bir şeylerin gerçekleşmesi için programlamanız gerekir.
jcurrie33

1
Belki de diğer oyun motorlarının Unity3D'den daha sıkı bağlı bir alt sisteme sahip olduğunu söylemek daha iyidir. Yeni bir Unity3D projesi başlattığınızda ve varlıklardan hiçbirini almadığınızda boş bir sayfa elde edersiniz. İyi bir şey olduğunu düşündüğüm bir şey. Belki de bu, neden varsayılan alt sistemler olmadığını düşündüğüm üzerine biraz bakışımı eğdi. Sadece yapmam gereken projeler için uygun olmadıkları var. Ve bu Unity3D ile ilgili iyi şeylerden biri. Eğer çok eğimli iseniz, varsayılanları dışarıda bırakmak ve kendiniz kodlamak kolaydır.
Extrakun

3

Unity3D'nin yüzeyi süper kolay gibi görünüyor ve neredeyse her şey önceden inşa edilmiş, ancak bunların hiçbiri doğru değil. Zaten mevcut olan komut dosyalarını (her motor için var olan, Unity'ye karşı kötü nokta) ve biraz ultra güçlü olarak tanımladığınız eklentileri, kesinlikle değil olduklarını görmezden gelirseniz, Unity sadece editörlü bir programlama arabirimidir.

Kodun çoğuna kendiniz sahipsiniz. Bunu 2 farklı projede deneyimledim.


2

Flaşla analoji oldukça doğru, ama kuklalarla benzetmenizi gerçekten anlamıyorum.

Birlik hakkında iyi şeyler:

  • çapraz platform: Bu çok büyük bir artı, daha büyük bir sebep olduğunu söyleyebilirim.
  • Yüksek kaliteli motor ve uygulama, yani Unity gameobjects vb.
  • Sıfırdan basit bir oyun yapmak çok kolay, bu yüzden prototip yapmak için bir artı.

Kötü şeyler:

  • C ++ veya C ile bağlantı kurulamaz, bu nedenle projeniz yalnızca Unity üzerinde çalışabilir. C # ile XNA üzerinde çalışacağını iddia edebilir, ancak C ++ iyi olurdu. Bu açıklama ile, uygulamanız üzerinde tam bir kontrole sahip olmadığınız için deneyimli profesyonellerin veya autodidact'ların kullanacağı bir araç olmadığı anlamına gelir, ancak bu Unity ile yapamayacağınız bir şey olmadığı anlamına gelmez. Öte yandan, harika bir fikri ve yetenekli sanatçıları olan bir ekip, deneyimli programcılara ihtiyaç duymadan harika şeyler yapabilir.
  • Oldukça yeni, bu yüzden kimse bu aracın nereye götüreceğini bilmiyor.

Unity ile sevmediğim şey, tüm zor işlerin yapıldığı gibi hissettirmesidir, bu yüzden programcılar çok daha az değerlidir. Öte yandan, insanlara hızlı bir şekilde şeyleri nasıl inşa edeceklerini hızlı bir şekilde öğretmek harika.

Sonuç olarak: Birlik (veya Birlik gibi bir araç), büyük programcılara ulaşamayan, ancak yine de küçük bir oyun senaryosu yapmayı bilen sanatçılar için daha fazladır. DERSİN tam özellikli bir oyun yapabilir, gerçekçi IA ekleyebilirsiniz, mmo net kodu yapıyor ve ne yapmazsınız, ancak büyük şirketler Birlik kullanmaz.

Programlama modelleri, bu "bağımsız" oyun üreticilerine uyması için geliştirme araçlarının 3 / 4'üne uyan bir çözüm önerebilir. Belirli bir araca değer verir ve sanatçılara da değer verir, ancak programcılara değil (elbette birlik ekibinden olanlar hariç).

Birlik, programcı olmayanlar için iyi bir kısayoldur, ancak video oyunlarının kod satırlarından geldiğini ve her şeyi harika bir araçla yapamayacağınızı anlamalıdırlar. Bir noktada, düşük seviyeli programlama hakkında bir şeyler bilmek gerekir.

Kişisel bir projeye sahip olarak, Unity'yi kullanmam, çünkü C # veya Boo'yu sevmiyorum (Panda python ile iyidir, bu yüzden neden ticari bir yazılımla uğraşıyorsunuz?) Ve çünkü projemi gösteriyorsam ve bittiğinde birlik, çok daha az etkileyici olacak.


1
Kendimi yorum: C ++ programlamak için izin pro eklentileri de vardır, bu yüzden teorik olarak, aynı zamanda bir C ++ motoru ...
jokoon

1

Birlik senaryo yazmanızı gerektirir, ancak tüm levhalar olmadan. Tipik bir OpenGL oyununda, matrisleri ve kameraları deli gibi başlatmanız gerekecek. Unity'de, bir şeyin davranışını anlatmak için bir komut dosyası oluşturursunuz, sonra davranmasını sağlamak için bir nesneye iliştirirsiniz.


1

Eğer sizin için çok fazla kod üreterek, çarpışma algılama ve rotasyon hesaplamaları (Kütüphane) ile ilgili hayatınızı kolaylaştırmak için kullanabileceğiniz önceden oluşturulmuş fonksiyonlar dahil ederseniz, evet, resimden çok fazla kodlama alır ve verir elinizdeki sürümleri optimize ettiniz ve kullanıma hazırsınız. Çoğunlukla tüm yapılarda Oyun Geliştirme için özel olarak ihtiyaç duyacağınız işlevler.

Bunu söylemek gereksiz gelebilir, ancak deneyimlerime göre, Unity3D çökmekle veya inşa etmekle meşgul olmadığında, istediğimi değiştirmeme ve Quaternion tabanlı matematiği matematikte yüksek lisans derecesine sahip insanlara bırakmama izin vererek hayatımı kolaylaştırıyor ve hala istediğimi değiştirmeme yetecek kadar bana güven.

Sizin için hiçbir şey yazmaz, daha ziyade en iyi olduğunu düşündüğü şekilde size yardımcı olur ve istediğinizi yazmanıza izin verir.

Tek kelimeyle, Esnek

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.