我想为我的模型创建一些默认的导入设置,以便当将模型导入到编辑器中时,我可以修改Receive Shadows
,Motion Vectors
,Reflection Probes
和其他字段的值 MeshRenderer
该模型的孩子在预制级别上。
这是可能的吗?
我更喜欢一种解决方案,以便修改模型文件的默认导入设置,并且我没有必要创建模型资产文件的重复预制。
编辑:
沿着接受的答案的方向走,这是我提出的代码以实现所需的结果。
using UnityEngine;
public class DefaultImportSettings : AssetPostprocessor
{
void OnPostprocessModel(GameObject go) //Is called when we import a fbx or when we press apply on its settings
{
Renderer[] renderers = go.GetComponentsInChildren<Renderer>();
for (int i = 0, iMax = renderers.Length; i < iMax; i++)
{
Renderer renderer = renderers[i];
renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
renderer.receiveShadows = false;
renderer.motionVectorGenerationMode = MotionVectorGenerationMode.ForceNoMotion;
renderer.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off;
renderer.lightProbeUsage = UnityEngine.Rendering.LightProbeUsage.Off;
// Other renderer modifications
}
}
}
我认为可能是可能的,但是对于需要导入的每个模型很难修改。我找到了一些文件:https://docs.unity3d.com/scriptreference/prefabutility.instantiateprefab.html
https://docs.unity3d.com/scriptreference/assetpostprocessor.onpreprocessmodel.html
AssetPostProcessor.onpreProcessModel()获取模型设置的方法,然后使用Prefabutility.instantiateprefab()创建具有自己设置的Prefab。