我最初想直接修改.anim文件
但通過后來得到的信息,其實根運動狀態儲存在FBX.meta文件里,轉出的.anim文件雖然也有根運動的信息但是算是塌陷過的,無法進行開關操作。
這是我針對有根運動.anim文件和無根運動的.anim對比圖:
后來根據論壇查到的信息,具體參數在meta下的這條屬性中:
humanDescription: human: [] skeleton: [] armTwist: .5 foreArmTwist: .5 upperLegTwist: .5 legTwist: .5 armStretch: .0500000007 legStretch: .0500000007 feetSpacing: 0 rootMotionBoneName: Root
官方論壇給出的具體操作代碼:

using UnityEngine; using UnityEditor; using System.Collections; public class SetRootMotionNode { [MenuItem("Mecanim/SetRootMotionNode")] static void DoSetRootMotionNode() { Object obj = Selection.activeObject; if (obj == null) return; string assetPath = AssetDatabase.GetAssetPath(obj); ModelImporter modelImporter = AssetImporter.GetAtPath(assetPath) as ModelImporter; if (modelImporter == null) return; SerializedObject modelImporterObj = new SerializedObject(modelImporter); SerializedProperty rootNodeProperty = modelImporterObj.FindProperty("m_HumanDescription.m_RootMotionBoneName"); rootNodeProperty.stringValue = "Beta:Hips"; modelImporterObj.ApplyModifiedProperties(); AssetDatabase.ImportAsset(assetPath); } }
結果我修改再提取.Anim文件還是舊的。。。,如果要得到最新的.fbx中的文件,需要調用方法重新導入一次.fbx文件:
modelImporter.SaveAndReimport();