using UnityEditor;
using UnityEngine;
using System;
using System.IO;
using System.Collections.Generic;
///
/// 自动裁剪出模型,需要把模型放入到/Artise/ClipAnimation目录下
///
namespace James.Editor
{
public class ModelProcessor : AssetPostprocessor
{
public void OnPostprocessModel(GameObject go)
{
//Set the file path variable for our models
string lowerCaseAssetPath = assetPath.ToLower();
//Apply this script ONLY if we are in our folder
if (lowerCaseAssetPath.IndexOf("artise/clipanimation") == -1) //type your file location with all your models here in lowercase
return;
string HowToClipCfgPath = lowerCaseAssetPath.Replace(".fbx", ".txt");
if (!File.Exists(Directory.GetCurrentDirectory() + "/" + HowToClipCfgPath)) return;
ModelInterpret mi = ModelInterpretor.read(HowToClipCfgPath);
if (mi == null) return;
///Model importer lets you modify model import settings from editor scripts.
ModelImporter modelImporter = assetImporter as ModelImporter;
modelImporter.animationType = ModelImporterAnimationType.Legacy;
List clips = new List();
foreach (CustomizeAnim curConfig in mi.anims)
{
clips.Add(ParseAnimationClip(curConfig));
}
if (clips.Count > 0)
modelImporter.clipAnimations = clips.ToArray();
modelImporter.assetBundleName = mi.abName;
}
ModelImporterClipAnimation ParseAnimationClip(CustomizeAnim anim)
{
string clipName = anim.name;
int startIndex = anim.start;
int endIndex = anim.end;
ModelImporterClipAnimation clip = new ModelImporterClipAnimation();
clip.firstFrame = Convert.ToSingle(startIndex);
clip.lastFrame = Convert.ToSingle(endIndex);
clip.loopTime = true;
clip.name = clipName;
return clip;
}
}
}