如何在 Unity 2017.1 中为动画片段(FBX 和其他)启用 loopTime

How to enable loopTime for animation clips (FBX and others) in Unity 2017.1

我有一个 FBX 模型,其动画片段作为子资产(嵌入其中),我想为其中的所有片段启用循环。我发现 AnimationUtilityGetClipSettings 方法现在已经过时了,也尝试使用它但没有用。这可能是因为 Unity 已经更改了循环的 API,并且似乎访问 loopTime 属性 的唯一方法是手动访问 fbx 模型的子集并检查 loopTime 属性。但是,我必须自动执行此过程,因为我在构建 assetbundle 之前为我的模型生成动态动画控制器。管道包括 post/pre-processing,然后通过编辑器脚本构建资产包。到目前为止,我遇到了 使用它我可以通过为每个剪辑设置 ModelImporterClipAnimation.loopTime = true 来启用 loopTime 并且它有效。但是,现在模型看起来完全是粉红色的,因为无论出于何种原因它都失去了对其材质的引用,只有当我包含 AssetPostprocessing 脚本时才会发生这种情况。

这应该怎么处理?

如果包含 AssetPostprocessorOnPreprocessAnimation 为什么模型会丢失材料?我错过了什么吗?

如果我弄乱了 AssetPostprocessor,我是否还应该通过其他方法处理 Material 引用?

我们可以通过其他方式访问 loopTime 吗?不过文档中没有具体说明。

我的代码与上面引用的 post 完全相同,除了启用 loopTime 的细微变化。还是有更好的方法来完成这一切?

P.S。经过一天的搜索和试验后,我 post 提出了这个问题,如果问题不够清楚,请提前致歉。如果需要,我可以添加更多信息。

我认为您必须自己处理 material。您可以将 ModelImporter.importMaterials 设置为 false 以在导入模型时创建默认漫反射 material。

如果material已经存在,也可以搜索已有的material,导入模型时加载:

ModelImporter modelImporter = (ModelImporter)assetImporter;
modelImporter.materialName = ModelImporterMaterialName.BasedOnMaterialName;
modelImporter.materialSearch = ModelImporterMaterialSearch.Local;

请参阅 ModelImporterMaterialName and ModelImporterMaterialSearch 文档了解您的其他选项。