Come posso creare un gioco in Unity con il minimo / nessun uso dell'editor visivo?


24

Mi piacerebbe scrivere un gioco completamente in C #. Nella mia ricerca di un motore, ho trovato Unity3D, ma tutti i tutorial e la documentazione parlano di un editor visivo e dell'IDE Unity in cui fai clic e punti per creare scene e script.

Non voglio farlo. Preferisco la copertura completa del codice rispetto ai progettisti che astraggono le cose lontano da me. Vorrei solo scrivere codice C # puro da zero o, se necessario, gli script Unity come aggiunta. Non sono riuscito a trovare alcuna spiegazione o documentazione in merito; come posso costruire un gioco usando Unity e facendo un uso minimo (o no) dell'editor visivo?


1
Votando per chiudere, questa è una raccomandazione quadro mascherata da una domanda su Unity.
BlueRaja - Danny Pflughoeft il

2
In realtà non sono sicuro di essere d'accordo, anche se non annullerei il voto ravvicinato di una comunità. Tuttavia, noterò che questa domanda si rivolge in modo specifico ad alcune funzionalità di Unity: risposte che non affrontano e che possono essere rimosse. Diamo non trasformare questo in un off topic domanda se non abbiamo a, va bene?
Josh,

2
La maggior parte degli sviluppatori cerca un editor visivo a un certo punto per progettare i propri livelli, perché posizionare visivamente le cose è molto più semplice che impostare la posizione di ogni piccolo scarabocchio nel codice. Lo stesso vale per la modifica / progettazione di layout della GUI. Avere queste cose già integrate è un grande vantaggio per IMHO.
Bummzack,

4
I prefer writing my own level editor which provides only the stuff really neccessary for my gameokay, ciò significa che fondamentalmente non vuoi usare un motore di gioco, ma vuoi programmare con una libreria grafica. Tuttavia hai già colpito un problema tecnico quando provi a farlo, quindi ... Sento una contraddizione qui.
jhocking

3
@jhocking Quindi la nostra definizione del motore di gioco sembra essere molto diversa. Una biblioteca di classe è un motore di gioco se si astraggono compiti di gioco tipici come la matematica della fotocamera, un sistema audio e forse anche un po 'di roba fisica, ma un designer non è un requisito e secondo me non dovrebbe nemmeno essere un must-use .
Ray

Risposte:


27

Sono un principiante assoluto in Unity, ma è così che lo faccio al momento e riduce al minimo l'utilizzo dell'editor:

Nell'editor, ho solo tre oggetti: un GameObject vuoto chiamato "main", una videocamera e una luce. E questo solo perché finora lavoro solo con una singola fotocamera e una sola luce, quindi è stato più veloce in questo modo. Più tardi li rimuoverò probabilmente e rimarrà solo il "principale".

In "Assets / MyScripts" ho una classe "Main", che viene aggiunta al GameObject "main" come comportamento. Ciò significa che all'avvio del programma viene istanziata la classe "Main" e viene chiamato il suo metodo. La classe "Main" è così:

using UnityEngine;

public class Main : MonoBehaviour
{

    void Start ()
    {
        // initialize the game
    }

    void Update ()
    {
        // update physics
    }

}

Nel gioco costruisco dinamicamente l'ambiente in questo modo:

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

Ma questo perché finora sto solo realizzando un prototipo. Più tardi vorrò sostituire i cubi con alcune cose carine modificate in Blender. Ciò richiederà di renderli in Blender e importarli in Unità come "prefabbricati". Quindi, istanzerò allo stesso modo i "prefabbricati" dal codice C #.

Se si desidera che un oggetto reagisca agli eventi, come le collisioni con altri oggetti, è possibile creare un'istanza dell'oggetto e aggiungerli dinamicamente una classe di comportamento, che è una classe C # derivata da MonoBehavior. Ad esempio, se vuoi avere una macchina, fai una macchina prefabbricata e scrivi una classe "CarBehavior" per il suo comportamento nel gioco.

In questo modo è possibile ridurre al minimo l'interazione con l'editor, anche se probabilmente non completamente a zero. Ora dipende se questa è una soluzione accettabile per te.


2
Direi che sembra una risposta abbastanza chiara e solida solo per un principiante Unity :)
Ray

Grazie! In caso contrario, sono un programmatore esperto, ma questo è il mio primo progetto in Unity ed è tutt'altro che finito. Non ho ancora usato i prefabbricati. Potrebbero esserci alcune complicazioni di cui attualmente non sono a conoscenza, quindi consiglio di prendere il mio consiglio con un granello di sale. A proposito, la serializzazione in Unity mi sembra un po 'controintuitiva. Dovrò studiarlo più in profondità, e potrebbe influenzare alcune decisioni di progettazione.
Viliam Búr,

9

Quando lavori con Unity devi fare un po 'di lavoro all'interno dell'editor di Unity; è semplicemente così che funziona Unity.

Tuttavia, la stragrande maggioranza di ciò che faresti come programmatore non accade nell'editor di Unity; i file di script sono file di testo esterni scritti in un IDE esterno e come programmatore usi l'editor di Unity solo per collegare gli script da eseguire e quindi premere Play per avviare effettivamente il gioco. Questo non è diverso dal collegamento in classi nelle impostazioni del progetto e quindi premendo Esegui nel tuo IDE.

La maggior parte degli altri strumenti di sviluppo di giochi che hanno un editor visivo centrale sono anche sellati da un supporto di scripting limitato e poco flessibile, ma Unity non ha questo svantaggio. Anche se tutto ciò che è stato creato per Unity passa attraverso l'editor visuale, questa interfaccia di base prevede molti collegamenti tra progetti e codice personalizzato che viene eseguito nel motore di gioco di Unity. Programmatori esperti, non ignorare questo ambiente di sviluppo, confondendolo con qualche creatore di giochi insieme con capacità di programmazione limitata!

(inoltre, sembra che il libro che sto scrivendo sarebbe una grande risorsa per te, dato che è destinato a programmatori esperti)


1
Stavo

6

Credo che quello che stai cercando sia il Futile Framework for Unity.

Fondamentalmente, puoi quindi eseguire tutta la programmazione usando gli script senza dover "trascinare e rilasciare" cose o pasticciare con l'editor visivo. Tutto ciò di cui hai bisogno è un singolo GameObject nella tua scena che sarà il contenitore per l'intero gioco. Quindi fai tutto proceduralmente come faresti con un editor non visivo.

Disclaimer: mentre Futile è molto incentrato sul codice, è inevitabile che dovrai confondere in qualche modo con l'editor Unity. Ma questo è molto ridotto con Futile.


2

Vorrei aggiungere tutte le buone risposte qui, in particolare la risposta di @jhocking:

Quasi tutto ciò che ho trovato in Unity ha una controparte in chiaro nella struttura delle cartelle dei progetti. Ho modificato direttamente prefabbricati e altri oggetti di gioco senza aprire Unity e tali modifiche sono state rilevate con successo da altri sviluppatori al momento del commit.

Anche se non sapevo molto del Futile Framework fino ad oggi, sembra essere un modo davvero fantastico per ottenere tutto.

Attualmente uso tutte le cose drag-and-drop invece di andare su script, ma questo dovrà cambiare poiché il mio obiettivo avrà generato proceduralmente livelli e cattivi.

I miei due centesimi dicono sostanzialmente di ottenere i pochi oggetti necessari in Unity, quindi fare affidamento sugli script in un editor esterno. Puoi fare quasi tutto con un semplice testo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.