从导入的模型中删除组件(不实例化GameObject)

时间:2018-06-21 09:09:55

标签: c# unity3d procedural-generation

最近,我一直在Unity中使用Asset Importer / Model Importer,并成功地删除了导入的上的CameraLight组件使用C#脚本进行3D模型。但是我的问题是我无法删除似乎在每个模型上都存在的Animator组件。 我正在使用的代码:

importedModel = (ModelImporter)AssetImporter.GetAtPath("Assets/Resources/" + Path.GetFileName(fileName));
importedModel.importAnimation = false;//This is NOT working (Model still has Animator)
importedModel.importCameras = false; //This is working
importedModel.importLights = false; //This is working
importedModel.meshCompression = ModelImporterMeshCompression.High;
AssetDatabase.WriteImportSettingsIfDirty(importedModel.assetPath);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();

我尝试的另一件事是从模型中获取实际的Animator组件,然后销毁。我已经使用以下代码成功获得了对该组件的引用:

foreach (Animator animatorComponent in Resources.FindObjectsOfTypeAll<Animator>())        
    DestroyImmediate(animatorComponent, true);

但是,当我使用DestroyImmediate时,该组件仍然存在。
如何从我的3D模型中删除/停用该组件{}?

1 个答案:

答案 0 :(得分:1)

根据ModelImporter,您可以使用animationType属性指定Animator generation mode

options是:

  • 没有
  • 旧版
  • 通用
  • 人类

在您的情况下,这可以解决问题;

importedModel.animationType = ModelImporterAnimationType.None;