Unity'de bir oyunu nasıl yapabilirim? Görsel editörü kullanmadan nasıl yapabilirim?


24

Tamamen C # ile bir oyun yazmak istiyorum. Bir motor arayışımda Unity3D'yi buldum, ancak tüm dersler ve belgeler görsel bir editör ve içinde senaryolar ve komut dosyaları oluşturmak için tıkladığınız ve işaret ettiğiniz Unity IDE hakkında konuşuyor.

Bunu yapmak istemiyorum. Benden uzak şeyleri soyutlayan tasarımcılara göre tam kod kapsamını tercih ederim. Sıfırdan sadece saf C # kodunu yazmak ya da Unity komut dosyasını bir ek olarak istenirse yazmak istiyorum. Bunu yapmak için herhangi bir açıklama veya belge bulamadım; Unity kullanarak ve görsel düzenleyiciden minimum (veya hayır) yararlanarak nasıl oyun yapabilirim?


1
Kapatmaya oy vermek, bu Birlik hakkında bir soru olarak gizlenmiş bir çerçeve öneridir.
BlueRaja - Danny Pflughoeft

2
Bir topluluğun yakın oylamasını devirmemeye rağmen, buna katılıp katılamayacağımı bilmiyorum. Ancak, bu sorunun özellikle Unity'nin bazı kabiliyetlerini sorduğunu not edeceğim: kaldırılabilecek olan cevap vermeyen cevaplar. Diyelim değil , tamam mı etmek yoksa konu soruya kapalı bir dönüştürelim?
Josh,

2
Çoğu geliştirici, seviyelerini tasarlamak için bir noktada görsel bir editör arar, çünkü görsel olarak konumlandırma, koddaki her küçük doodanın konumunu belirlemekten çok daha kolaydır. Aynı GUI düzenlerini düzenlemek / tasarlamak için de geçerlidir. Bu şeylerin zaten yerleşik olması IMHO'nun çok büyük bir yararıdır.
Bummzack

4
I prefer writing my own level editor which provides only the stuff really neccessary for my gameTamam, bu temel olarak bir oyun motoru kullanmak istemediğiniz, bir grafik kütüphanesi ile programlama yapmak istediğiniz anlamına gelir. Bununla birlikte, bunu yapmaya çalışırken teknik bir engel aldınız, bu yüzden ... Burada bir çelişki hissediyorum.
14’te

3
@jhocking O zaman oyun motoru tanımımız çok farklı görünüyor. Sınıf kütüphanesi, kamera matematiği, ses sistemi ve hatta biraz fizik meselesi gibi tipik oyun görevlerini özetlerse bir oyun motorudur, ancak bir tasarımcı bir gereklilik değildir ve bence bir zorunluluk olmamalıdır .
Ray

Yanıtlar:


27

Unity'de tam bir acemiyim, ancak şu anda bunu yapıyorum ve editör kullanımını minimuma indirdi:

Editörde sadece üç nesnem var: "main" denilen boş bir GameObject, bir kamera ve bir ışık. Ve bu sadece şu ana kadar sadece tek bir kamera ve tek bir ışıkla çalıştığım için, bu şekilde daha hızlıydı. Daha sonra muhtemelen onları kaldıracağım ve sadece “ana” kalacak.

"Assets / MyScripts" 'de "main" GameObject öğesine bir davranış olarak eklenen bir "Main" sınıfım var. Bu, program başladığında, başlatılan "Ana" sınıfın ve yönteminin çağrıldığı anlamına gelir. "Ana" sınıfı şöyledir:

using UnityEngine;

public class Main : MonoBehaviour
{

    void Start ()
    {
        // initialize the game
    }

    void Update ()
    {
        // update physics
    }

}

Oyunda dinamik olarak şu şekilde ortamı yapıyorum:

GameObject floor = GameObject.CreatePrimitive (PrimitiveType.Cube);
floor.renderer.material.color = RandomGreen ();

Ama bunun nedeni şu ana kadar sadece bir prototip yapıyorum. Daha sonra küpleri Blender'da düzenlenen hoş şeyler ile değiştirmek isteyeceğim. Bu, onları Blender'da yapmayı ve onları “prefabrik” olarak Birimlere ithal etmeyi gerektirecektir. Daha sonra da benzer şekilde C # kodundan "prefabrikleri" örnekleyeceğim.

Bir nesnenin diğer nesnelerle çarpışmalar gibi olaylara tepki vermesini istiyorsanız, nesneyi somutlaştırabilir ve bunları dinamik olarak MonoBehavior'den türetilmiş bir C # sınıfı olan davranış sınıfı ekleyebilirsiniz. Örneğin, bir arabaya sahip olmak istiyorsanız, bir araba prefabrik yapıyorsunuz ve oyundaki davranışları için bir "CarBehavior" sınıfı yazıyorsunuz.

Bu sayede editör ile etkileşimi en aza indirgeyebilirsiniz, ancak muhtemelen tamamen sıfıra olmasın. Şimdi bunun sizin için kabul edilebilir bir çözüm olup olmadığına bağlı.


2
Bunun bir Birlik acemisi için oldukça net ve sağlam bir cevap gibi göründüğünü söyleyebilirim :)
Ray

Teşekkürler! Aksi halde tecrübeli bir programcıyım, ama bu Birlik'teki ilk projem ve bitmedi. Henüz prefabrik kullanmadım. Şu anda farkında olmadığınız bazı komplikasyonlar olabilir, bu yüzden tavsiyemi bir tuz tuzu ile yapmanızı tavsiye ederim. Bu arada, Birlik'te seri hale gelmek bana biraz karşı sezgisel geliyor. Daha derinlemesine çalışmam gerekecek ve bazı tasarım kararlarını etkileyebilir.
Viliam Búr

9

Unity ile çalışırken Unity'nin editöründe bazı işler yapmalısınız; Birlik böyle çalışır.

Bununla birlikte, bir programcı olarak yapacağınız işlerin büyük çoğunluğu Unity'nin editöründe gerçekleşmez; script dosyaları harici bir IDE'de yazılmış harici metin dosyalarıdır ve bir programcı olarak yalnızca Unity'nin editörünü kullanarak hangi komut dizilerinin çalışacağını ve ardından oyunu gerçekten çalıştırmak için Oynat'ı tıklatacağınızı kullanırsınız. Bu, proje ayarlarındaki sınıflara bağlanmaktan ve IDE'nizdeki Çalıştır'a basmaktan farklı değildir.

Merkezi bir görsel editöre sahip olan diğer oyun geliştirme araçlarının çoğu sınırlı ve esnek olmayan betik desteğiyle de üzülür, ancak Unity bu dezavantajdan zarar görmez. Sonuçta Unity için yaratılan her şey görsel editörden geçse de, bu çekirdek arayüz, Unity'nin oyun motorunda çalışan özel kodlarla pek çok proje arasında bağlantı kurmayı içeriyor. Tecrübeli programcılar, sınırlı bir programlama özelliğine sahip birlikte oyun yaratıcısı için bir araya getirerek bu geliştirme ortamını reddetmeyin!

(Ayrıca, şu anda yazdığım kitabın, deneyimli programcıları hedef aldığı için sizin için harika bir kaynak olacağını düşünüyorum)


1
Bu cevaba rastladığımda kitabınızı okuyordum
en son

6

Aradığın şeyin Geleceğin Birlik için Çerçeve Çerçevesi olduğuna inanıyorum .

Temel olarak, tüm programlarınızı, "sürükleyip bırakmak" veya görsel editörle uğraşmak zorunda kalmadan komut dosyalarını kullanarak yapabilirsiniz. İhtiyacınız olan tek şey, tüm oyununuzun konteyneri olacak olan Sahnenizde tek bir GameObject. Daha sonra görsel olmayan bir editörle yaptığınız gibi her şeyi usule göre yaparsınız.

Feragatname: Futile çok kod merkezli olsa da, Unity editörüyle bir şekilde uğraşmanız kaçınılmazdır. Ancak bu Futile ile çok azaldı.


2

Buradaki tüm iyi cevapları, özellikle de jhocking'in cevabını eklemek isterim:

Birlik'te bulduğum hemen hemen her şeyin, projeler klasörü ağacında düz bir metin karşıtı var. Birlik açmadan prefabrikler ve diğer gameObjects'leri doğrudan düzenledik ve bu değişiklikler taahhüt üzerine diğer geliştiriciler tarafından başarıyla bulundu.

Bugüne kadar Futile Framework hakkında pek bir şey bilmiyordum, her şeyi elde etmek için gerçekten harika bir yol gibi görünüyor.

Şu anda senaryo tabanlı olmak yerine tüm sürükle ve bırak öğelerini kullanıyorum, ancak amacım prosedürel olarak oluşturulan seviyelere ve kötü adamlara sahip olacağından bu değişmek zorunda kalacak.

İki sentim temel olarak Unity'de ihtiyacınız olan birkaç nesneyi elde ettiğini ve ardından harici bir editördeki komut dosyalarını kullandığını söylüyor. Neredeyse her şeyi düz metin olarak yapabilirsiniz.

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.