¿Cómo puedo construir un juego en Unity con un uso mínimo / sin uso del editor visual?

24

Me gustaría escribir un juego completamente en C #. En mi búsqueda de un motor, encontré Unity3D, pero todos los tutoriales y la documentación hablan sobre un editor visual y el IDE de Unity en el que hace clic y señala para crear escenas y guiones.

No quiero hacer eso. Prefiero la cobertura de código completo sobre los diseñadores que abstraen las cosas de mí. Me gustaría escribir solo código C # puro desde cero o, si es necesario, los scripts de Unity como una adición. No pude encontrar ninguna explicación o documentación sobre hacerlo; ¿Cómo puedo construir un juego usando Unity y haciendo un uso mínimo (o nulo) del editor visual?

Rayo
fuente
1
Votando para cerrar, esta es una recomendación marco disfrazada como una pregunta sobre Unity.
BlueRaja - Danny Pflughoeft
2
En realidad no estoy seguro si estoy de acuerdo con eso, aunque no revocaría un voto cercano de la comunidad. Sin embargo, notaré que esta pregunta se refiere específicamente a alguna capacidad de Unity: respuestas que no abordan y que pueden eliminarse. Vamos a no convertir esto en un tema de pregunta si no tenemos que, de acuerdo?
Josh
2
La mayoría de los desarrolladores buscan un editor visual en algún momento para diseñar sus niveles, porque posicionar visualmente las cosas es mucho más simple que establecer la posición de cada pequeño doodad en el código. Lo mismo ocurre con la edición / diseño de diseños de GUI. Tener estas cosas ya incorporadas es un gran beneficio en mi humilde opinión.
bummzack
44
I prefer writing my own level editor which provides only the stuff really neccessary for my gamebueno, eso básicamente significa que no quieres usar un motor de juego, sino programar con una biblioteca de gráficos. Sin embargo, ya has topado con un problema técnico cuando intentas hacer eso, así que ... siento una contradicción aquí.
jhocking
3
@jhocking Entonces nuestra definición del motor de juego parece ser muy diferente. Una biblioteca de clases es un motor de juegos si abstrae las tareas típicas del juego, como las matemáticas de la cámara, un sistema de sonido y tal vez incluso un poco de física, pero un diseñador no es un requisito y, en mi opinión, ni siquiera debería ser un uso obligatorio .
Ray

Respuestas:

27

Soy un principiante completo en Unity, pero así es como lo hago en este momento, y reduce el uso del editor al mínimo:

En el editor, solo tengo tres objetos: un GameObject vacío llamado "main", una cámara y una luz. Y esto es solo porque hasta ahora solo trabajo con una sola cámara y una sola luz, por lo que fue más rápido de esta manera. Más tarde probablemente los eliminaré, y solo quedará el "principal".

En "Assets / MyScripts" tengo una clase "Main", que se agrega al GameObject "main" como comportamiento. Lo que significa que cuando se inicia el programa, la clase "Principal" se instancia y se llama a su método. La clase "Principal" es así:

using UnityEngine;

public class Main : MonoBehaviour
{

    void Start ()
    {
        // initialize the game
    }

    void Update ()
    {
        // update physics
    }

}

En el juego construyo dinámicamente el entorno así:

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

Pero esto se debe a que hasta ahora solo estoy haciendo un prototipo. Más adelante querré reemplazar los cubos con algunas cosas bonitas editadas en Blender. Lo que requerirá hacerlos en Blender e importarlos a las Unidades como "prefabricados". Luego, crearé una instancia similar de los "prefabricados" del código C #.

Si desea que un objeto reaccione a eventos, como colisiones con otros objetos, puede crear una instancia del objeto y agregarlos dinámicamente una clase de comportamiento, que es una clase C # derivada de MonoBehavior. Por ejemplo, si quieres tener un auto, haces un auto prefabricado y escribes una clase "CarBehavior" por su comportamiento en el juego.

De esta manera, puede reducir la interacción con el editor al mínimo, aunque probablemente no completamente a cero. Ahora depende de si esta es una solución aceptable para usted.

Viliam Búr
fuente
2
Diría que esto parece una respuesta bastante clara y sólida para un principiante de Unity :)
Ray
¡Gracias! De lo contrario, soy un programador experimentado, pero este es mi primer proyecto en Unity y está lejos de estar terminado. No he usado prefabricados todavía. Puede haber algunas complicaciones que actualmente no conozco, por lo que recomiendo tomar mi consejo con un grano de sal. Por cierto, la serialización en Unity me parece un poco intuitiva. Tendré que estudiarlo más a fondo, y puede influir en algunas decisiones de diseño.
Viliam Búr
9

Cuando trabajas con Unity tienes que hacer algo de trabajo dentro del editor de Unity; así es simplemente como funciona Unity.

Sin embargo, la gran mayoría de lo que estarías haciendo como programador no sucede dentro del editor de Unity; los archivos de script son archivos de texto externos escritos en un IDE externo, y como programador solo usas el editor de Unity para vincular qué scripts ejecutar y luego presionar Play para ejecutar el juego. Eso no es diferente a vincular las clases en la configuración del proyecto y luego presionar Ejecutar dentro de su IDE.

La mayoría de las otras herramientas de desarrollo de juegos que tienen un editor visual central también están cargadas con un soporte de secuencias de comandos limitado e inflexible, pero Unity no sufre esa desventaja. Aunque todo lo creado para Unity finalmente pasa por el editor visual, esta interfaz central implica una gran cantidad de proyectos de vinculación con código personalizado que se ejecuta en el motor de juego de Unity. Programadores experimentados, ¡no descarten este entorno de desarrollo, confundiéndolo con un creador de juegos de clic juntos con capacidad de programación limitada!

(también, parece que el libro que estoy escribiendo actualmente sería un gran recurso para usted, ya que está dirigido a programadores experimentados)

jhocking
fuente
1
estaba en medio de la lectura de su libro cuando me encontré con esta respuesta
max pleaner
6

Creo que lo que está buscando es el Marco Fútil para la Unidad.

Básicamente, puede hacer toda su programación usando scripts sin tener que "arrastrar y soltar" cosas o meterse mucho con el editor visual. Todo lo que necesitas es un solo GameObject en tu Scene, que será el contenedor de todo tu juego. Luego haces todo de manera procesal como lo harías con un editor no visual.

Descargo de responsabilidad: Si bien Futile está muy centrado en el código, es inevitable que tenga que meterse con el editor de Unity de alguna manera. Pero esto se reduce mucho con Futile.

midasmax
fuente
2

Me gustaría agregar a todas las buenas respuestas aquí, especialmente la respuesta de @jhocking:

Casi todo lo que he encontrado en Unity tiene una contraparte de texto sin formato en el árbol de carpetas de proyectos. He editado directamente prefabs y otros GameObjects sin abrir Unity, y esos cambios fueron encontrados con éxito por otros desarrolladores al momento de la confirmación.

Si bien no sabía tanto sobre el Futile Framework hasta hoy, parece ser una forma realmente increíble de llegar a todo.

Actualmente uso todas las cosas de arrastrar y soltar en lugar de basarme en guiones, pero eso tendrá que cambiar ya que mi objetivo habrá generado niveles de procedimiento y malos.

Mis dos centavos dicen que básicamente obtienes los pocos objetos que necesitas en Unity, luego confía en los scripts en un editor externo. Puedes hacer casi todo en texto plano.

vulpineblazeyt
fuente