如何在 Unity 2017.1 中为动画片段(FBX 和其他)启用 loopTime
How to enable loopTime for animation clips (FBX and others) in Unity 2017.1
我有一个 FBX 模型,其动画片段作为子资产(嵌入其中),我想为其中的所有片段启用循环。我发现 AnimationUtility
的 GetClipSettings
方法现在已经过时了,也尝试使用它但没有用。这可能是因为 Unity 已经更改了循环的 API,并且似乎访问 loopTime 属性 的唯一方法是手动访问 fbx 模型的子集并检查 loopTime 属性。但是,我必须自动执行此过程,因为我在构建 assetbundle 之前为我的模型生成动态动画控制器。管道包括 post/pre-processing,然后通过编辑器脚本构建资产包。到目前为止,我遇到了 使用它我可以通过为每个剪辑设置 ModelImporterClipAnimation.loopTime = true
来启用 loopTime 并且它有效。但是,现在模型看起来完全是粉红色的,因为无论出于何种原因它都失去了对其材质的引用,只有当我包含 AssetPostprocessing 脚本时才会发生这种情况。
这应该怎么处理?
如果包含 AssetPostprocessor
的 OnPreprocessAnimation
为什么模型会丢失材料?我错过了什么吗?
如果我弄乱了 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
文档了解您的其他选项。
我有一个 FBX 模型,其动画片段作为子资产(嵌入其中),我想为其中的所有片段启用循环。我发现 AnimationUtility
的 GetClipSettings
方法现在已经过时了,也尝试使用它但没有用。这可能是因为 Unity 已经更改了循环的 API,并且似乎访问 loopTime 属性 的唯一方法是手动访问 fbx 模型的子集并检查 loopTime 属性。但是,我必须自动执行此过程,因为我在构建 assetbundle 之前为我的模型生成动态动画控制器。管道包括 post/pre-processing,然后通过编辑器脚本构建资产包。到目前为止,我遇到了 ModelImporterClipAnimation.loopTime = true
来启用 loopTime 并且它有效。但是,现在模型看起来完全是粉红色的,因为无论出于何种原因它都失去了对其材质的引用,只有当我包含 AssetPostprocessing 脚本时才会发生这种情况。
这应该怎么处理?
如果包含 AssetPostprocessor
的 OnPreprocessAnimation
为什么模型会丢失材料?我错过了什么吗?
如果我弄乱了 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
文档了解您的其他选项。