FBX Material confusion


I have a material (with texture) asset in Unity that I want to set as the material for a collection of FBX assets, however it doesn't seem possible to change the material on the FBX. Even if the FBX model was created without a material, and I exported it without any textures/materials, Unity seems to assign a default material, such as "model-no name", which is un-editable and un-deletable.

I know I can create an instance of an FBX, assign a material, then make a prefab out of this. The problem with this is, if I want to redistribute these assets, I have to package a lot of those 'dummy' materials along with the single real material.

e.g. If I have model1.fbx, model2.fbx etc. which all use 'MyWood' material, instead of being able to distribute just those items, I have to also include the 'dummy' materials that appear with the FBX: model1-no name, mode2-no name etc., as well as creating the prefabs. If I don't, then the although the prefabs will still work, the FBX importer says "Missing (Material)" which looks un-professional and some users might think is an error with my models.

Is there a more elegant way to provide just the single material and the fbx models?



Edit: Unlike a question that was asked earlier, I am successfully setting up UVs (in Cinema 4D) which are being imported correctly with the fbx mesh - just wanted to clarify that my question has is not related to that.

One part I don't get is what you mean by "redistribute/package models".

Anyway my suggestion would be, to set correct materials in FBX, i.e. in your modeling tool. Then if you place textures in correct place (see this: http://unity3d.com/support/documentation/Manual/Meshes.html) Unity FBXImporter will detect these textures and assign to your models. Actually if you have material import setting "Per Texture" on FBXImporter (which is default BTW), then all models, which use the same texture, will use the same material as well.

Depending on what you need you can always play with material import setting on FBXImporter.

And if you still don't like automatic material generation you can always write AssetPostprocessor.OnAssignMaterial and control which materials are assigned on import.