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?
I prefer writing my own level editor which provides only the stuff really neccessary for my game
bueno, 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í.Respuestas:
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í:
En el juego construyo dinámicamente el entorno así:
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.
fuente
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)
fuente
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.
fuente
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.
fuente