Skip to content
Dunking Dog Games Dunking Dog Games

Unity 2022 – Decal Projectors Don't Work in Android Build

· Unity , Blog , FAQ , Mobile Games

Decal projector not working in Unity Android build

The Issue

Unity 2022 is a popular game development engine that has recently been released with a range of new features and improvements. However, some developers have reported issues with decal projectors not working in Android builds.

Decal projector working in Unity editor but missing in build

Decal projectors are an important part of creating realistic environments in games, as they allow developers to add decals or textures to surfaces in the game world. Unfortunately, Unity 2022 currently has a bug that prevents decal projectors from working correctly in Android builds.

Current Status

This issue has been acknowledged by Unity Technologies, and while they are working to find a solution, there is currently no official fix. In the meantime, developers who rely on decal projectors in their games may need to stay on Unity 2021 or find alternative solutions.

📌 Update: Check Unity’s bug tracker for the latest status on this issue. The bug ID is typically referenced as Case #XXXXX in their internal tracking system.

Workarounds and Alternatives

Option 1: Stay on Unity 2021 LTS

If decal projectors are critical to your project, consider staying on Unity 2021 LTS until the bug is fixed in a future 2022 release.

Option 2: Use Alternative Decal Solutions

Several third-party assets and techniques can replace Unity’s built-in decal projector:

SolutionTypeCostQuality
Final IK DecalsAssetPaid (~$30)High
Custom Shader DecalsDIYFreeMedium-High
Sprite DecalsDIYFreeLow-Medium

Custom Shader Approach (Free)

Create a simple decal system using a transparent quad with a custom shader:

using UnityEngine;

[ExecuteInEditMode]
public class SimpleDecal : MonoBehaviour
{
    public Texture2D decalTexture;
    public float size = 1f;
    public float fadeDistance = 5f;

    private MeshRenderer renderer;

    void Start()
    {
        if (decalTexture == null) return;
        
        // Create a quad mesh
        MeshFilter mf = GetComponent<MeshFilter>();
        if (mf == null) mf = gameObject.AddComponent<MeshFilter>();
        
        mf.mesh = CreateQuadMesh();
        
        // Set up material
        Material mat = new Material(Shader.Find("Transparent/Diffuse"));
        mat.mainTexture = decalTexture;
        renderer = GetComponent<MeshRenderer>();
        if (renderer == null) renderer = gameObject.AddComponent<MeshRenderer>();
        renderer.material = mat;
    }

    Mesh CreateQuadMesh()
    {
        Mesh mesh = new Mesh();
        Vector3[] vertices = new Vector3[4]
        {
            new Vector3(-0.5f, 0, -0.5f),
            new Vector3(0.5f, 0, -0.5f),
            new Vector3(0.5f, 0, 0.5f),
            new Vector3(-0.5f, 0, 0.5f)
        };
        
        int[] triangles = new int[6] { 0, 1, 2, 0, 2, 3 };
        
        mesh.vertices = vertices;
        mesh.triangles = triangles;
        mesh.RecalculateNormals();
        
        return mesh;
    }
}

Option 3: Bake Decals into Textures

For static environments, consider baking decal effects directly into your texture maps using tools like:

  • Substance Painter – Paint decals directly onto UV maps
  • Photoshop/GIMP – Manual texture editing
  • Blender Texture Painting – Free alternative for texture work

Keep an Eye on Unity’s Official Forums

Developers can keep an eye on Unity’s official forums (see this post) for updates on this issue, as well as to see if any workarounds or alternative solutions have been identified by the community.


Have you found a workaround for this issue? Share it in the comments below! 🔧✨

Tags: unity