一定要调用AssetDatabase.ImportAsset 重新导入资源;否则这里对资源的更改,在工程视图下的文件不会生效!
// 切割动画文件. 获取模型中的动画文件。
// https://docs.unity3d.com/ScriptReference/ModelImporter.html
static void CutModelAnimation ()
{
AnimationClipConfig config = new AnimationClipConfig ();
ModelImporter mi = ModelImporter.GetAtPath (config.mModelName) as ModelImporter;
Debug.LogWarning("一定要调用AssetDatabase.ImportAsset 重新导入资源;否则这里对资源的更改,在工程视图下的文件不会生效!") ;
if (!mi.importAnimation)
{
mi.importAnimation = true;
AssetDatabase.ImportAsset (config.mModelName);
}
ModelImporterClipAnimation[] animations = mi.clipAnimations;
TakeInfo[] takeInfos = mi.importedTakeInfos;
DebugFormat.LogWarning (config.mModelName, takeInfos.Length);
if (takeInfos == null || takeInfos.Length == 0)
return;
DebugFormat.Log (takeInfos[0].name,takeInfos[0].defaultClipName,takeInfos[0].startTime,takeInfos[0].stopTime);
// 设置动画类型
mi.animationType = ModelImporterAnimationType.Generic;
mi.generateAnimations = ModelImporterGenerateAnimations.GenerateAnimations;
ModelImporterClipAnimation[] cuttedAnimations = new ModelImporterClipAnimation[config.mConfigs.Count];
AnimationClipData d;
for (int i = 0; i < cuttedAnimations.Length; i++)
{
d = config.mConfigs [i];
cuttedAnimations [i] = CutAnimationClip (d.mClipName,d.mStartFrame,d.mEndFrame,d.mLoop);
}
mi.clipAnimations = cuttedAnimations;
// 一定要调用AssetDatabase.ImportAsset 重新导入资源,否则这里对资源的更改,对工程视图下的文件不会生效。
Debug.LogWarning("一定要调用AssetDatabase.ImportAsset 重新导入资源;否则这里对资源的更改,在工程视图下的文件不会生效!") ;
AssetDatabase.ImportAsset (config.mModelName);
AssetDatabase.Refresh ();
}