How to Change The Default Shader of the elusive "None (Material)" given to imported FBX files

Prefabs cannot be generated at runtime. Prefabs exist only in editor and are created only by tooling in the UnityEditor namespace, which never goes into a final build, ever.

You can disable this by not importing materials at all. This lets you create and apply any material you like to any geometry.

Here are my notes on using Blender3D with Unity3D:


When I work in Blender3D for Unity3D use, I follow these organizational rules:

  • use Empty Blender Objects as folders: they come out as an extra GameObject

  • ALWAYS parent everything to a single Empty, even a single object

  • ALWAYS apply all Scales and Rotations on every Transform throughout your hierarchy.

  • put as few objects in a given .blend file as possible, combining them in Unity into a prefab

  • REMOVE unnecessary items (Light, Camera, etc.)

  • use good names for your Blender3D objects and NEVER RENAME them after Unity sees them

  • don’t even think about final Materials or Textures in Blender. Set the mesh to use N different materials, but always set up the materials within Unity and disregard what gets imported.


Costs of using Blender files directly vs exporting to FBX:

Unity imports Blender3D objects as FBX via a little Python script:

The Python script that Unity uses (substitute your Unity version number or search) to import:

./Hub/Editor/2020.2.1f1/Unity.app/Contents/Tools/Unity-BlenderToFBX.py

More on fixing it:

Blender3D objects used as trees / detail in Unity3D terrain (See the second half of this response)

Probuilder and Probuilderize and Blender:

Some more potentially-useful info:

Updating Blender files without breaking your prefabs: