Apply a Texture to a Unity Object
Unity displays a texture through a material. The material defines the shader and surface properties; a Mesh Renderer or Skinned Mesh Renderer assigns that material to the object’s mesh.
Import the image, place it in a material property, then assign that material to the object’s Renderer.
- Import the image with the correct Texture Type and platform settings.
- Create a material and assign the texture to its main color property.
- Assign the material to the correct Renderer element and inspect the object’s UV mapping.
VRChat recommends textures no larger than 1024 × 1024 for Android content and advises minimizing material count. Android avatars must also use shaders provided by the VRChat SDK. Test the material on every published target.
Understand the Asset Chain
| Part | Responsibility | Where to inspect |
|---|---|---|
| Texture | Imported image data, resolution, compression, mipmaps, and color handling | Texture Import Settings |
| Material | Shader and surface properties that use one or more textures | Material Inspector |
| Mesh | Geometry and UV coordinates that determine where the texture appears | Mesh asset or modeling application |
| Renderer | Material assignments for the mesh or skinned mesh | Mesh Renderer or Skinned Mesh Renderer |
Changing the texture asset changes every material that uses it. Changing a shared material changes every Renderer that uses that material.
Import the Texture
- Drag the image into a folder under
Assets, such asAssets/Project/Textures. - Select the image in the Project window.
- Set Texture Type for its purpose.
- Configure Max Size, compression, mipmaps, and platform overrides.
- Click Apply.
Use:
| Texture role | Texture Type |
|---|---|
| Base color, albedo, masks, and most ordinary surface inputs | Default |
| Tangent-space normal texture | Normal map |
| Sprite used by a UI Image | Sprite (2D and UI) |
For a normal color image, keep sRGB (Color Texture) enabled. A data texture or mask may need sRGB disabled when the shader expects linear channel values.
Use Optimize Texture Imports in Unity 2022.3 for the full texture-size, mipmap, Read/Write, compression, and memory workflow.
Create a Material
- Open the destination folder in the Project window.
- Right-click and choose Create > Material.
- Give the material a descriptive name, such as
BrickWall_Mat. - Select the material.
- Confirm its shader is appropriate for the project and target platform.
Unity materials define how a surface is rendered and expose properties supplied by their shader. Property names therefore vary between shaders.
Do not create a second material when the object should use an existing shared surface. Reuse the existing material when the shader, textures, and property values are meant to remain identical.
Assign the Texture to the Material
In the Material Inspector:
- Find the shader’s main color texture property.
- Drag the texture asset from the Project window into that property.
- Set the adjacent color or tint to white when the source color should remain unchanged.
- Inspect the material preview.
- Save the project.
The main property might be named Albedo, Base Map, Base Color Map, Main Texture, or something shader-specific. Use the shader’s documentation when its properties are unfamiliar.
Additional material inputs require the correct data:
| Property | Input |
|---|---|
| Normal | Texture imported as Normal map |
| Metallic / Smoothness | Values or packed channels expected by the shader |
| Occlusion | Occlusion data in the channel expected by the shader |
| Emission | Emission color and optional texture |
Do not place an ordinary color image into a normal or mask property simply because the slot accepts it.
Assign the Material to the Object
Use one of these methods:
- drag the material onto the object in the Scene view
- drag the material onto the object in the Hierarchy
- assign it to an element under the Renderer’s Materials section
For exact control:
- Select the object.
- Find its Mesh Renderer or Skinned Mesh Renderer.
- Expand Materials.
- Drag the material asset into the intended Element.
- Inspect every visible part of the object.
Unity documents that the Renderer’s Materials section lists all materials used by that component. Each Element can reference a material asset.
Match Material Elements to Submeshes
A mesh can contain multiple submeshes. Renderer material elements are assigned across those submeshes.
| Result | Likely cause |
|---|---|
| Only one part changes | The mesh has multiple submeshes or Renderers |
| Several parts use the same material | Multiple elements reference the same material |
| One surface is drawn more than once | The Renderer has more material elements than the mesh has submeshes |
| Material appears on the wrong part | Material-element order does not match the intended submesh |
Unity warns that extra materials beyond the number of submeshes render again over the last submesh. Additional opaque layers provide no visible benefit and reduce performance.
Inspect child objects as well. An imported model can contain several Mesh Renderers or Skinned Mesh Renderers rather than one Renderer on the selected root.
Check the UV Mapping
UV coordinates map positions on the mesh to positions in the texture.
When the texture appears stretched, rotated, mirrored, or placed across the wrong faces:
- Confirm the correct material and texture are assigned.
- Test Tiling and Offset for simple repetition or positioning.
- Check whether the object has non-uniform scale that changes the visible proportions.
- Inspect the mesh UVs in the modeling application for complex errors.
Tiling repeats the texture across the existing UV layout. Offset shifts it. These controls do not rebuild damaged or missing UV coordinates.
For a unique sign, label, or photo, match the mesh proportions and UV layout to the image instead of stretching the texture to compensate.
Understand Shared Materials
When several objects use the same material asset, editing that material changes all of them.
Reuse a material when:
- the objects should have the same shader
- the same texture and properties are intended
- a consistent repeated surface is required
Create a separate material when:
- the shader or texture must differ
- one object needs a different tint or surface value
- the target platform requires a deliberately different material setup
Check whether a prefab or imported asset owns the material before editing it. A change to one shared asset can affect many prefab instances.
Repair Imported FBX Materials
An FBX can define material names and include or reference textures. Unity’s model importer provides a Materials tab for material creation and remapping.
When an imported model is gray, pink, or missing textures:
- Select the FBX in the Project window.
- Open its Materials import tab.
- Inspect the material-import and search settings.
- Check the listed material remaps.
- Extract embedded materials or textures when that workflow is required.
- Create or locate project material assets.
- Assign the correct textures and shader properties.
- Remap the FBX material slots to the intended material assets.
- Click Apply and inspect every Renderer.
Do not repeatedly edit a generated or embedded material without confirming whether the importer will overwrite it on reimport.
If the source model has no useful UV mapping, reconnecting its image files will not fix stretching.
Diagnose Shader and Lighting Problems
| Symptom | Check |
|---|---|
| Pink surface | Missing, broken, or unsupported shader |
| Texture is absent | Material property, Renderer element, and active material asset |
| Surface is too dark | Lighting, material tint, shader, and baked-light settings |
| Surface is too shiny | Metallic, smoothness, specular, and reflection settings |
| Normal detail looks inverted or flat | Normal texture import type and shader property |
| PC works but Android fails | Android shader support, platform texture override, and target build |
A correct texture cannot repair an incompatible shader. A correct material cannot repair missing UVs.
Avoid converting a VRChat project to another render pipeline merely to repair a pink material. Identify the material’s intended shader and current platform requirements first.
Verify PC and Android
For VRChat content:
- Check the material under the final scene lighting.
- Test from the closest and farthest intended player positions.
- Build and test the PC version.
- Switch to Android when the project targets Android or Quest.
- Confirm the Android texture override and shader.
- Inspect VRChat SDK validation messages.
- Compare material count, texture memory, and visual result.
VRChat’s Android documentation recommends keeping material count low, compressing textures, avoiding unnecessary transparency, and enabling GPU instancing on supported materials.
Troubleshooting
I dragged the texture onto the object and nothing changed.
Create or select a material, place the texture in that material’s main color property, then assign the material to the object’s Mesh Renderer or Skinned Mesh Renderer.
Only one part of the model uses the new material.
Inspect every material Element and child Renderer. The model probably contains multiple submeshes, material elements, or Renderer components.
The texture is stretched, mirrored, or on the wrong faces.
Confirm the material, then inspect the mesh UVs. Tiling and Offset can repeat or shift a valid UV layout, but complex mapping errors need to be corrected in the modeling application.
Changing one material also changes other objects.
Those objects share the same material asset. Keep the shared material when the surfaces should match, or create and assign a separate material for the object that needs different properties.
The imported FBX loses its material changes after reimport.
Use the FBX Materials tab to extract or remap project material assets instead of relying on an embedded or generated material that the importer can recreate.
The material is pink or disappears on Android.
Check whether the shader exists and is supported on the active platform. For Android avatars, use the shaders supplied by the VRChat SDK, then rebuild and test the Android target.
Continue Learning
- Creating and Managing Materials
- Create and Apply a Solid-Color Material in Unity
- Optimize Texture Imports in Unity 2022.3
- Display Photos in Unity 2022.3
- Import 3D Assets for VRChat Worlds
Official References
- Unity 2022.3 Materials
- Unity 2022.3 Mesh Renderer
- Unity 2022.3 Texture Import Settings
- Unity 2022.3 Importing Assets
- Unity 2022.3 Model Importer: Materials
- VRChat Android Content Optimization
- VRChat Android Content Limitations
Next Step
Select one textured object and trace its texture asset, material property, Renderer element, and mesh UV result before editing a more complex imported model.