解决错误:OnAssignMaterial must return a persistent material (AssetDatabase.CreateAsset)

项目中有需求对 AssetPostprocessor.OnAssignMaterialModel 进行自定义处理,代码如下

public  Material OnAssignMaterialModel(Material mat,Renderer render)
{
	if (mat.shader.name.Contains("Particles"))
	{
		mat.shader = Shader.Find("Mobile/Particles/Additive");
	}

	return mat;
}

转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

但是发现有时候导入模型会报以下错误

解决错误:OnAssignMaterial must return a persistent material (AssetDatabase.CreateAsset)_第1张图片


OnAssignMaterial must return a persistent material (AssetDatabase.CreateAsset)

在Unity 官网寻得答案

http://answers.unity3d.com/questions/39976/what-to-return-from-onassignmaterialmodel.html

原来在Unity 文档中已经注明,如果函数没有进行任何处理,要返回 Null 。

http://docs.unity3d.com/ScriptReference/AssetPostprocessor.OnAssignMaterialModel.html

解决错误:OnAssignMaterial must return a persistent material (AssetDatabase.CreateAsset)_第2张图片



修改成如下,解决问题

public  Material OnAssignMaterialModel(Material mat,Renderer render)
{

	if (mat.shader.name.Contains("Particles"))
	{
		mat.shader = Shader.Find("Mobile/Particles/Additive");

		return mat;
	}
	else
	{
		return null;
	}
}


你可能感兴趣的:(Unity)