
Buen día, querido Khabarovsk!
Cada desarrollador quiere crear su propio juego más rápido, pero ¿cómo hacerlo? Este artículo analiza las habilidades básicas para reducir el tiempo de desarrollo en un entorno de Unity.
Habilidad n. ° 1: trabajar con la estructura del proyecto
Para mantener el orden en el proyecto, debe comprender su estructura. Se puede representar de la siguiente manera:
- Modelos: almacena todos los modelos utilizados en el proyecto.
- Prefabricados: almacena todas las plantillas de modelo
- Texturas: almacena todas las texturas
- Materiales: almacena todos los materiales
- Scripts: almacena todos los scripts.
- Sonidos: almacena todos los sonidos
- Animaciones: almacena todas las animaciones.
Si tiene objetos complejos, por ejemplo, un personaje, se crea una carpeta separada para él, donde se repite la estructura anterior.
Estructura de carpetas de caracteresOtro enfoque sería crear las carpetas descritas anteriormente y colocar las partes del objeto en cada carpeta, es decir, la siguiente estructura se utilizará para la animación de personajes.
Estructura de carpetas de animaciónHabilidad # 2: trabajar con una jerarquía de objetos en la escena
Para simplificar el trabajo con conjuntos de objetos idénticos, se pueden combinar en grupos donde un objeto vacío actúa como padre.
Esto ayudará a apagar fácilmente la luz en todo el lugar o en interiores. Averigua la ubicación de todos los objetos.
Cada elemento se llama en relación con lo que es, al final se agrega un postfix del objeto padre. Por ejemplo, una barra de oro en una cueva se llamará “goldBar_cv1”, donde cv1 significa cueva1, y un árbol en el bosque “tree_frt1”, donde frt1 significa bosque1. Para postfix, se toman la primera letra de la palabra, la primera letra de la segunda sílaba y la última letra de la palabra.
Un ejemplo de una jerarquía de objetos en una escena.Habilidad # 3 - Trabajar con presentación visual
La unidad tiene 3 fuentes de luz principales:
- Luz direccional: un análogo del sol
- Point Light - análogo de una bombilla
- Spotlight - análogo de una linterna
Si hay luz, entonces debe haber una fuente de luz. Por ejemplo, en una cueva no puede ser ligero si el personaje no tiene una antorcha (para una antorcha, la luz puntual es adecuada).
Use PostProcessing para aplicar efectos.
La escena sin postprocesamiento
Escena de postprocesamientoUPD a partir de ese
sentido :
Además de las fuentes de luz presentadas visualmente, también hay configuraciones de luz globales: una pestaña en la parte superior de la ventana , el elemento de iluminación , el subelemento de configuración . Allí puede, por ejemplo, ajustar la iluminación del entorno, instalar un skybox, agregar niebla. En realidad, es aquí donde debe mirar si se hizo la pregunta "eliminó todas las fuentes de luz, pero es la misma luz en el escenario que en la tarde". Por cierto, ya puedes acceder a esta configuración mientras el juego se ejecuta en el editor para que puedas ver los cambios de inmediato. Sin embargo, después de cerrar el modo de juego, la configuración volverá al estado que tenía antes del inicio de la prueba del juego. Por lo tanto, debe volver a subir a esta ventana y ajustar los valores. Un detalle útil: si, por ejemplo, desea cambiar el color de la iluminación (color ambiental en el entorno de iluminación del grupo), luego, en el panel con una paleta, preste atención al elemento hexadecimal: el número del color actual se indica en la ventana, puede copiarlo y pegarlo en el mismo campo más adelante cuando el modo de juego está desactivado. El mismo truco es útil para ajustar el color de la niebla, etc.
Del mismo modo, mientras se ejecuta en el modo de juego, puede cambiar algunos parámetros de los objetos a través del editor: los valores de los scripts variables movidos a la zona de visibilidad, habilitar / deshabilitar la representación de la malla de objetos, etc. Lo principal es no dejarse llevar para no romper algo. Después de que se apaga el modo de juego, se restaurarán los valores modificados. Esto no se aplica a algunos elementos individuales, por ejemplo, si editó la textura del terreno en el modo de juego incluido, sus cambios se guardarán.
Habilidad # 4 - Trabaja con la cámara
¿Necesitas encontrar un objeto en el escenario? Haga clic 2 veces en el nombre del objeto en la jerarquía.
¿Quieres volar a través del escenario desde 1 persona? Mantenga presionada RMB y muévase con las teclas WASD, aceleración de cambio.
¿Quieres ver la escena desde diferentes ángulos? Aprovecha Gizmos (Gizmos).
Gizmo UbicaciónHabilidad # 5 - Trabajar con objetos
¿Quieres agregar un personaje a la escena? Agregue los componentes RigidBody y CapsuleCollaider. RigidBody le dice al motor que la física del estado sólido debe aplicarse a este objeto.
¿Quieres comprobar la colisión de un personaje con un objeto? Agregue el componente MeshCollaider al objeto y en la secuencia de comandos de caracteres en la función OnCollisionEnter verifique la etiqueta del objeto que encontró el personaje.
Un ejemplo de la implementación de la comprobación de colisión de un personaje con un objetoprivate void OnCollisionEnter(Collision collision) { switch (collision.gameObject.tag) { case "Moneys": Destroy(collision.gameObject);
UPD a partir de ese
sentido :
No siempre es necesario que un personaje use un cuerpo rígido; los métodos de gestión pueden ser diferentes. Pero casi siempre se requerirá un colisionador para un personaje, a menos que vayas a calcular las colisiones de una manera más complicada. Unity también tiene varios controladores / colisionadores específicos: es mejor leer la documentación para comprenderlos con más detalle. Pero es mejor comenzar con ejemplos simples en YouTube.
En cuanto a los objetos que encuentra el personaje. Mesh Collider generalmente debe colgarse de aquellos objetos cuya forma compleja es de una manera u otra importante para que tenga en cuenta la colisión. Si es solo un botón, es mejor sobrevivir con colisionadores más simples como Box Collider. Además, es posible que tenga que hacer una cuadrícula de colisión invisible más simple para objetos 3D particularmente complejos y colgar el Colisionador de malla en él, y no en el objeto visible en sí.
Acerca de los colisionadores de botones, vale la pena recordar que en su componente del colisionador debe marcar la casilla Is Trigger para que el script pueda manejar el evento click. Se debe asignar un componente de cuerpo rígido a cualquier barril, caja y otros objetos que simplemente reaccionen físicamente de manera hermosa a las colisiones y caigan bajo la influencia de la gravedad.
Habilidad # 6 - Importar modelos
Considere el procedimiento usando el ejemplo de importar un modelo desde Blender. Se supone que ya ha realizado un escaneo, aplicado una textura o materiales seleccionados.
- Coloque el modelo en coordenadas cero (centro relativo a los ejes)
- Establecer escala en uno
- Eliminar objetos innecesarios (cámara, fuente de luz)
- Guarde el modelo en formato .fbx
- Transferir archivo a Unity
- Acceda a las carpetas: modelo a modelos, material a materiales, etc.
- Crear modelo prefabricado
- Trabaja más con prefabricados
UPD a partir de ese
sentido :
Licuadora
Tenga en cuenta que si los materiales de la licuadora se asignan al modelo, se transferirán de forma simplificada y se acumularán en la lista de materiales.
No es necesario que desarrolle complejas y texturice en Blender en absoluto; una forma más fácil es revisar todos los elementos del modelo y seleccionar el elemento Datos en la ventana de la derecha. Este es un ícono en forma de triángulo que mira hacia abajo con tres puntos entre los elementos Modificadores (llave inglesa) y Material (bola rosa). En él, haga clic en + al lado del gráfico de Mapas UV : aparece un escaneo automático con un icono de bola de ajedrez. Esto debe hacerse para cada elemento del modelo y solo luego exportar. Entonces, ya en Unity, será posible aplicar material con una textura de mosaico a esta parte, y si esto no se hace, entonces el material solo pintará la parte en un color sólido. (Si luego deformó el elemento del modelo, deseche el barrido y vuelva a asignarlo para que no se estire).
Si su modelo consta de diferentes elementos, ya en Unity puede mover elementos individuales de su modelo o deshabilitarlos. Esto puede ser útil en varias situaciones.
Cómo texturizar un modelo de una manera simple.
Primero necesita unas texturas de mosaico de 512 a 512. Agréguelo de la misma manera que el modelo 3D a través de Importar nuevo activo (recuerde que debe seleccionarse una carpeta adecuada). Al mismo tiempo, a la derecha, en el inspector, en la textura agregada en la ventana Predeterminada , establezca el parámetro Tamaño máximo en 512. Y luego haga clic en Aplicar . Ahora la textura está lista para agregarla al material o, por ejemplo, ahora se puede pintar en terreno. Preste atención al primer punto: Tipo de textura, ahora está en modo predeterminado, pero cuando necesite cargar un mapa normal, una imagen para un sprite translúcido, etc., deberá establecer la configuración adecuada allí.
Luego necesitamos crear el material. Volvemos al menú anterior: Activos , la lista desplegable Crear , Material (de nuevo, no olvide que el material se creará en la carpeta que está seleccionada actualmente). Conduce en el nombre del material y en el inspector abre el elemento Albedo (hasta que nos detenemos en otros parámetros, pero el principio es similar), donde busca y asigna su textura previamente cargada. Cerca hay una ventana de color que puede teñir adicionalmente su textura, así como controles deslizantes Metalic y Smoothness para agregar brillo o opacidad. El parámetro Tamaño de mosaico también es útil, se encuentran algunas líneas a continuación.
Después de crear el material, puede agarrarlo y arrojarlo directamente sobre el modelo o sus elementos, simplemente no se lo pierda, de lo contrario, no pinte lo que necesita.
No olvide que la misma textura se puede usar en diferentes materiales. Por ejemplo, con impurezas de diferentes colores y / o diferentes tamaños de baldosas.
Prefabricados
Por lo general, el prefabricado se hace de esta manera: arrastraron el objeto a la escena, luego engancharon su nombre en la ventana de jerarquía y lo arrastraron a la carpeta. Luego aparecerá un prefabricado basado en el objeto, en el inspector el prefabricado tendrá un icono de cubo azul y se firmará debajo de la etiqueta, Prefab.
Sin embargo, no necesita hacer todo lo prefabricado de inmediato. Puede lanzar el objeto en la escena, luego clonarlo con copiar y pegar y probarlo así. Si todo le conviene, transfiera el objeto al prefabricado, si no, por ejemplo, ha aparecido un error en el modelo, luego elimine sus copias de la escena, el modelo en sí de la carpeta, fíjelo en el paquete 3D e impórtelo nuevamente.
También puede insertar algunos elementos secundarios nuevos dentro del prefab en el escenario. Sin embargo, no se convertirán en una parte completa, es decir, no afectarán otras copias de este prefabricado hasta que haga clic en el botón Aplicar en el inspector en la línea con el nombre Prefab.
Habilidad # 7 - Lógica de implementación
Evitar operaciones costosas. Un ejemplo es determinar la distancia a un objeto.
Ejemplo de operación costosa using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Transform other; void Example() { if (other) {
Ejemplo de implementación más rápida using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Transform other; public float closeDistance = 5.0f; void Update() { if (other) { Vector3 offset = other.position - transform.position;
Lea más sobre operaciones costosas
aquí .
Conclusión
Las habilidades anteriores reducirán significativamente el tiempo tanto durante el desarrollo como durante el soporte del proyecto.
Si cree que algunos temas se revelan superficialmente, escriba los comentarios sobre ellos con más detalle.