参考:http://www.xiaobao1993.com/1046.html
之前用的代码的是,发现没有效果:
#region 无效的修改
//ModelImporter model = AssetImporter.GetAtPath(path) as ModelImporter;
//if (model != null)
//{
// ModelImporterClipAnimation[] clips = model.clipAnimations;
// if (clips != null)
// {
// for (int j = 0; j < clips.Length; j++)
// {
// clips[j].mirror = true;
// clips[j].lockRootRotation = true;
// clips[j].keepOriginalOrientation = true;
// clips[j].keepOriginalPositionY = true;
// clips[j].lockRootHeightY = true;
// clips[j].lockRootPositionXZ = true;
// clips[j].keepOriginalPositionXZ = true;
// clips[j].loopTime = true;
// }
// }
// model.SaveAndReimport();
// AssetDatabase.ImportAsset(path);
// AssetDatabase.Refresh();
//}
#endregion
后来参考网上的通过修改Meta文件修改格式:
[MenuItem("Assets/设置动画格式不带位移")] public static void SetFBXAnimationMode() { Object[] objs = Selection.objects; for (int i = 0; i < objs.Length; i++) { string path = GetObjMetaName(objs[i]); DoChangeFbxSetting(path); } } static string GetObjMetaName(Object obj) { string relatepath = AssetDatabase.GetAssetPath(obj); string dirpath = Application.dataPath.Replace("Assets", "") + relatepath + ".meta"; ; return dirpath; } /// <summary> /// 修改FBX的meta来修改它的格式 /// </summary> /// <param name="path"></param> static void DoChangeFbxSetting(string path) { path = path.Replace("\\", "/"); StreamReader fs = new StreamReader(path); List<string> ret = new List<string>(); string line; while ((line = fs.ReadLine()) != null) { line = line.Replace("\n", ""); if (line.IndexOf("importMaterials:") != -1) { line = " importMaterials: 1"; } if (line.IndexOf("keepOriginalOrientation") != -1) { line = " keepOriginalOrientation: 1"; } if (line.IndexOf("keepOriginalPositionY") != -1) { line = " keepOriginalPositionY: 1"; } if (line.IndexOf("keepOriginalPositionXZ") != -1) { line = " keepOriginalPositionXZ: 1"; } if (line.IndexOf("loopBlendOrientation") != -1) { line = " loopBlendOrientation: 1"; } if (line.IndexOf("loopBlendPositionY") != -1) { line = " loopBlendPositionY: 1"; } if (line.IndexOf("loopBlendPositionXZ") != -1) { line = " loopBlendPositionXZ: 1"; } if (line.IndexOf("rootMotionBoneName:") != -1) { line = " rootMotionBoneName: Bip001"; } string lowerpath = path.ToLower(); if (lowerpath.Contains("@ready.fbx") || lowerpath.Contains("@run.fbx")) { if (line.IndexOf("loopTime:") != -1) { line = " loopTime: 1"; } } ret.Add(line); } fs.Close(); File.Delete(path); StreamWriter writer = new StreamWriter(path + ".tmp"); foreach (var each in ret) { writer.WriteLine(each); } writer.Close(); File.Copy(path + ".tmp", path); File.Delete(path + ".tmp"); }