我有一个FBX模型,动画片段作为子集(嵌入其中),我想为其中的所有片段启用循环。我发现AnimationUtility
的{{1}}方法现在已经过时,并且尝试使用它但它没有用。这可能是因为Unity改变了他们的循环API,似乎访问loopTime属性的唯一方法是手动访问fbx模型的子集并检查loopTime属性。但是,我必须自动执行此过程,因为我在构建assetsbundles之前为我的模型生成动态动画控制器。管道包括后期/预处理,然后通过编辑器脚本构建assetbundles。到目前为止,我已经遇到了this post使用,我只能通过为每个剪辑设置GetClipSettings
来启用loopTime,并且它可以正常工作。然而,现在该模型看起来看起来完全是粉红色的,因为无论出于何种原因它都失去对其材料的引用,这只有在我包含AssetPostprocessing脚本时才会发生。
应如何处理?
如果包含ModelImporterClipAnimation.loopTime = true
的{{1}},模型为什么会丢失材料?我错过了什么吗?
如果我弄乱了OnPreprocessAnimation
?
我们可以通过其他方式访问loopTime吗?但是,它没有在文档中指定。
除了启用loopTime的细微更改之外,我的代码与上面引用的帖子完全相同。或者有更好的方法来做这一切吗?
P.S。经过一整天的搜索和实验后,我发布了这个问题,如果问题不够清楚,请提前道歉。如果需要,我可以添加更多信息。
答案 0 :(得分:2)
我认为你必须亲自处理这些材料。您可以将ModelImporter.importMaterials
设置为false
,以便在导入模型时创建默认的漫反射材质。
如果材料已存在,您还可以搜索现有材料并在导入模型时加载它:
ModelImporter modelImporter = (ModelImporter)assetImporter;
modelImporter.materialName = ModelImporterMaterialName.BasedOnMaterialName;
modelImporter.materialSearch = ModelImporterMaterialSearch.Local;
有关您拥有的其他选项,请参阅ModelImporterMaterialName
和ModelImporterMaterialSearch
文档。