Strange Error: Shader wants normals, but the mesh doesn't have them

A 3DText using a custom font has started giving me this strange message from the editor...

Shader wants normals, but the mesh  doesn't have them

The font I'm using is being used on some other 3DText prefabs and it works fine. But with one particular prefab (an XP Pop-up) this error keeps appearing and the 3D text refuses to show. What makes the problem even stranger is that it's started happening absolutely randomly for seemingly no reason...

Any ideas how I could fix this?

You're using a material with a shader that uses lighting (and therefore requires normals), but the mesh generated by 3DText doesn't have normals. Use a shader that doesn't use lighting instead.

Well after an hour of fiddling it seems to be working again. I most certainly had not changed any shader settings but as Eric put it... something must have changed. The steps I took to resolve the issue:

  1. Reinstalled the font
  2. Duplicated the prefab and deleted the old one
  3. Set the font of the 3DText part of the prefab to "None" and then back to the custom font
  4. Reassigned the prefab to all of the objects that used it

That worked in the end. I'm unsure what I could have done to screw things up as I tend to stay away from shaders where I can and in this project I'm not using any special custom shaders. Hopefully this will solve the issue for anyone else who has the same problem in future.

After spending hours on this, it turns out that I was trying to create a font material to use with a TextMesh, that wouldn’t draw over the top of other 3D objects in front of it.

Turns out I was using “Transparent → Diffuse”, which uses lighting (as Eric5h5 said), so I changed it to use “Unlit → Transparent” and the message went away.