What is a texture in Unity?

Guía Definitiva para Cambiar Texturas en Unity 3D

13/05/2019

Valoración: 4.65 (4041 votos)

Las texturas son el alma visual de cualquier videojuego. Son la piel que recubre los modelos 3D, transformando simples mallas de polígonos en personajes creíbles, entornos inmersivos y objetos detallados. Sin ellas, nuestros mundos virtuales serían colecciones de formas grises y sin vida. Dominar el arte de aplicar y cambiar texturas en Unity 3D es una habilidad fundamental para cualquier desarrollador, ya sea un principiante que da sus primeros pasos o un veterano que busca optimizar su flujo de trabajo. En esta guía completa, desglosaremos todo lo que necesitas saber, desde los conceptos básicos hasta las técnicas de scripting para modificar texturas dinámicamente durante el juego.

How do I use a render texture in Unity?
To use a Render Texture, create a new Render Texture using Assets > Create > Render Texture and assign it to Target Texture in your Camera A component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. Glossary that Unity creates and updates at run time.
Índice de Contenido

¿Qué es Exactamente una Textura en Unity?

En su forma más simple, una Textura en Unity es una imagen de mapa de bits. Piensa en ella como una calcomanía o un papel de regalo que se envuelve alrededor de un objeto 3D para darle color, detalle y apariencia de superficie. Puedes crear estas imágenes en cualquier software de edición como Photoshop, GIMP o Aseprite, y luego importarlas a tu proyecto de Unity. El motor es increíblemente versátil y soporta una amplia gama de formatos de archivo, lo que facilita la integración de tus assets.

Cuando importas un archivo de imagen a un proyecto 3D, Unity lo trata por defecto como una Textura. Si estuvieras en un proyecto 2D, lo interpretaría como un Sprite. Esta distinción es clave para el flujo de trabajo del motor. Una vez importada, la textura no se aplica directamente al objeto; primero debe ser parte de un Material, que a su vez se aplica al modelo 3D.

Formatos de Archivo Compatibles

Unity puede leer la mayoría de los formatos de imagen comunes. Aquí tienes una lista de los más utilizados:

  • BMP
  • EXR
  • GIF
  • HDR
  • JPG
  • PNG
  • PSD (archivos de Photoshop)
  • TGA
  • TIFF

Una gran ventaja es que Unity puede importar archivos PSD de Photoshop con múltiples capas y los acoplará automáticamente al importarlos. Esto significa que puedes mantener tu archivo de trabajo original con todas sus capas y usarlo directamente en Unity sin tener que exportar una versión aplanada cada vez que haces un cambio.

How to change texture in Unity 3D?

Preparando tus Texturas: Recomendaciones Clave

Antes de arrastrar y soltar imágenes en tu proyecto, es crucial entender algunas buenas prácticas que no solo mejorarán la calidad visual de tu juego, sino que también optimizarán su rendimiento. Una mala gestión de texturas puede ralentizar tu juego significativamente, especialmente en dispositivos móviles.

Dimensiones de Potencia de Dos

Idealmente, las dimensiones de tus texturas (ancho y alto) deberían ser potencias de dos. Esto significa tamaños como 32x32, 64x64, 128x128, 256x256, 512x512, 1024x1024, 2048x2048 píxeles, etc. No tienen por qué ser cuadradas (por ejemplo, 1024x512 es válido).

¿Por qué es tan importante? Las tarjetas gráficas (GPU) están optimizadas para trabajar con estas dimensiones. Usar texturas con estas medidas permite a la GPU procesarlas de manera más eficiente, lo que se traduce en un mejor rendimiento y menor consumo de memoria. Aunque Unity puede manejar texturas de tamaño no potencia de dos (NPOT), a menudo las redimensionará internamente a la siguiente potencia de dos, lo que consume memoria adicional y puede ralentizar los tiempos de carga.

How is a texture positioned in Unity?
The positioning of the texture is done with the 3D modelling software that is used to create the mesh. Unity can import textures from most common image file formats. This page uses the following terminology: Bits per pixel The smallest unit in a computer image. Pixel size depends on your screen resolution.

Mip Maps: El Secreto para la Distancia

Los Mip maps son versiones precalculadas y más pequeñas de una misma textura. Cuando un objeto está lejos de la cámara, Unity no necesita renderizar la textura en su máxima resolución. En su lugar, utiliza una de estas versiones más pequeñas. Esto tiene dos grandes beneficios:

  1. Mejora del rendimiento: Cargar texturas más pequeñas consume menos ancho de banda de la GPU.
  2. Calidad visual: Evita artefactos visuales como el "aliasing" o el parpadeo (shimmering) que pueden ocurrir cuando una textura de alta resolución se muestra en un espacio muy pequeño en la pantalla.

La desventaja es que habilitar los Mip maps aumenta el uso de memoria de la textura en aproximadamente un 33%. Por lo tanto, debes usarlos estratégicamente: habilítalos para texturas de objetos en el mundo del juego que se verán a diferentes distancias, pero desactívalos para elementos que siempre están a la misma distancia de la cámara, como los elementos de la interfaz de usuario (UI) o los skyboxes.

El Proceso Paso a Paso: Cambiando una Textura en Unity

Ahora que entendemos la teoría, vamos a la práctica. Aplicar una nueva textura a un objeto 3D es un proceso sencillo que involucra la importación de la imagen, la creación de un material y la asignación final al objeto.

Paso 1: Importar la Imagen a tu Proyecto

La forma más fácil de hacerlo es simplemente arrastrar el archivo de imagen (por ejemplo, `mi_textura.png`) desde tu explorador de archivos y soltarlo en la ventana de `Project` dentro del editor de Unity. Unity la procesará e importará automáticamente.

What is a bitmap image in Unity?
See in Glossary is a bitmap image. You can create textures in a digital content creation application, such as Photoshop, and import them into Unity. In a 3D Project, Unity imports image and movie files in the Assets folder as Textures. In a 2D Project, Unity imports image and movie files in the Assets folder as Sprites A 2D graphic objects.

Paso 2: Configurar la Textura

Haz clic en la imagen recién importada en la ventana de `Project`. En la ventana del `Inspector` a la derecha, verás todas las opciones de importación de la textura. Para un objeto 3D estándar, asegúrate de que el `Texture Type` esté configurado como `Default`. Aquí también puedes configurar opciones como la generación de Mip Maps.

Paso 3: Crear un Material

Una textura no puede vivir sola en un objeto. Necesita un Material. Un material define cómo se renderiza una superficie, utilizando la textura y otras propiedades definidas por un programa llamado Shader. Para crear un material, haz clic derecho en la ventana de `Project`, ve a `Create` y selecciona `Material`. Dale un nombre descriptivo, como `Material_Ladrillo`.

Paso 4: Asignar la Textura al Material

Selecciona tu nuevo material. En el `Inspector`, verás varias propiedades. La más importante para empezar es el mapa principal, llamado Albedo. Este es el color base o la textura principal del material. Verás un pequeño cuadrado a la izquierda de la palabra "Albedo". Simplemente arrastra tu textura desde la ventana de `Project` y suéltala en este cuadrado. ¡Verás cómo la esfera de previsualización en el Inspector se actualiza con tu textura!

Paso 5: Aplicar el Material al Objeto 3D

Este es el último paso. Arrastra tu material desde la ventana de `Project` y suéltalo directamente sobre el objeto 3D en tu `Scene View` o en la ventana de `Hierarchy`. ¡Listo! Tu objeto ahora está renderizado con la nueva textura.

Modificación Avanzada: Transparencia y Shaders

¿Qué pasa si quieres que tu textura tenga partes transparentes, como una ventana o una valla? Esto se controla a través del shader del material.

How do I create a textured object in Unity 2D?
You just have to import your picture into unity. (Drag and drop it there) Then click Assets → Create → Material. Then open up the material you just created and drag your picture to the Inspector panel into the box where it says “None (Texture 2D)”. Then just drag the material to the game object you want to be textured!

1. Selecciona tu material.
2. En el `Inspector`, en la parte superior, verás un menú desplegable llamado `Shader`. Por defecto, suele ser `Standard` o `URP/Lit` dependiendo de tu pipeline de renderizado.
3. Haz clic en él y cambia el `Rendering Mode` de `Opaque` a `Transparent` o `Cutout`. `Cutout` es para transparencias duras (completamente visible o completamente invisible), mientras que `Transparent` permite niveles intermedios de opacidad.
4. Ahora puedes controlar la transparencia. Si tu imagen PNG tiene un canal alfa, el shader lo usará automáticamente. También puedes ajustar la transparencia globalmente a través del selector de color de `Albedo`, modificando el canal `A` (Alpha).

Cambiando Texturas en Tiempo de Ejecución (Mediante Script)

En muchos juegos, es necesario cambiar la textura de un objeto dinámicamente. Por ejemplo, un personaje que se ensucia, un muro que cambia de apariencia o un power-up que altera un objeto. Esto se logra mediante scripts en C#.

El componente clave para esto es el Renderer, que es el responsable de dibujar el objeto en la pantalla. A través del renderer, podemos acceder al material del objeto y modificar sus propiedades, incluida su textura principal (`mainTexture`).

How to change texture in Unity 3D?
m.mainTexture = _texture; First of all assign a Gameobject that you want to change texture. Then assign an image in _texture. then get a material from that object and assign a _texture to that material.mainTexture. I am new to Unity 3D and I want to do just little task: to set image on a Texture instance in Unity 3D.

Ejemplo de Script en C#

Crea un nuevo script C# (`Create > C# Script`), llámalo `CambiadorDeTextura` y pega el siguiente código:

using UnityEngine; public class CambiadorDeTextura: MonoBehaviour { // Arrastra la nueva textura aquí desde el Inspector de Unity public Texture nuevaTextura; // Referencia al renderer del objeto private Renderer miRenderer; void Start() { // Obtenemos el componente Renderer al iniciar miRenderer = GetComponent(); } // Esta función se puede llamar para cambiar la textura public void AplicarNuevaTextura() { if (miRenderer != null && nuevaTextura != null) { // Accedemos al material del renderer y cambiamos su textura principal miRenderer.material.mainTexture = nuevaTextura; } } // Ejemplo de cómo cambiar la textura al pulsar una tecla void Update() { if (Input.GetKeyDown(KeyCode.T)) { AplicarNuevaTextura(); } } }

Para usar este script:
1. Adjúntalo a tu objeto 3D.
2. En el `Inspector`, verás un campo llamado `Nueva Textura`. Arrastra la textura que deseas aplicar desde tu ventana de `Project` a este campo.
3. Ejecuta el juego. Cada vez que presiones la tecla 'T', la textura del objeto cambiará a la que has asignado en el script.

Tabla Comparativa de Mapas de Textura Comunes

El `Albedo` es solo el comienzo. Los materiales modernos usan varios tipos de texturas para simular superficies complejas.

Tipo de MapaFunción Principal
Albedo/DiffuseEs el color base del objeto, sin información de iluminación o sombras.
Normal MapSimula detalles de relieve y abolladuras en una superficie sin añadir polígonos adicionales. Hace que los modelos de bajo poligonaje parezcan de alta resolución.
Metallic/Smoothness MapControla qué tan metálica es una superficie y cuán lisa o rugosa es, afectando cómo refleja la luz.
Emission MapHace que partes de una superficie parezcan emitir su propia luz, como las luces de un robot o una pantalla.

Preguntas Frecuentes (FAQ)

¿Cuál es la diferencia entre una Textura y un Material?

Una Textura es simplemente el archivo de imagen 2D. Un Material es un asset de Unity que define cómo se renderiza una superficie. El Material utiliza la textura (en el canal Albedo, por ejemplo) junto con muchas otras propiedades y un shader para lograr el aspecto final del objeto.

How to change texture in Unity 3D?

¿Por qué mi textura se ve borrosa en el juego?

Esto puede deberse a varias razones: la resolución original de la textura es demasiado baja, la configuración de compresión en el `Inspector` es muy agresiva, o el `Filter Mode` está configurado en `Bilinear` o `Trilinear` y estás viendo la textura muy de cerca. Asegúrate de que la textura tenga una resolución adecuada para la distancia a la que se verá y revisa la configuración de importación.

¿Puedo usar texturas que no sean potencia de dos?

Sí, puedes. Unity las manejará. Sin embargo, como se mencionó anteriormente, puede haber un impacto en el rendimiento y el uso de memoria, ya que la GPU podría necesitar procesarlas de manera diferente o Unity podría redimensionarlas internamente. La recomendación general es usar siempre potencias de dos para las texturas del mundo del juego y reservar los tamaños no potencia de dos (NPOT) solo para elementos de UI si es estrictamente necesario.

Con estos conocimientos, estás más que preparado para empezar a dar vida y color a tus creaciones en Unity. Experimenta con diferentes imágenes, juega con las propiedades de los materiales y no temas sumergirte en el scripting para crear experiencias visuales dinámicas e interactivas. El texturizado es un pilar fundamental del desarrollo de juegos, y dominarlo te abrirá un mundo de posibilidades creativas.

Si quieres conocer otros artículos parecidos a Guía Definitiva para Cambiar Texturas en Unity 3D puedes visitar la categoría Juegos.

Subir