導出Animator時,發現Animator中關聯了不少沒用的Animation文件。
這些無效的Animation都是之前曾經使用過的動畫文件。編輯器
猜想Animator中可能殘留了舊的動畫引用信息,致使該問題。
因爲作的一批角色動畫,動做都是配套的,Animator可重用。
因此除了第一個角色的動畫控制器是製做的,以後的Animator都是複製的第一個,換了動畫片斷,而關聯的無效動畫偏偏就是第一個角色的動畫,那麼基本能夠肯定,Animator在在替換動畫後,依然殘留了之前的動畫片斷引用,沒有被替換掉。ide
百度具體的解決方法 暫時沒有百度到 本身造個輪子吧。動畫
先對比一下文件 看看殘留的信息在哪
1.新建一個空白的動畫控制器
新建 Empty.controller 並添加一個空節點New State:ui
%YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!91 &9100000 AnimatorController: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_Name: Empty serializedVersion: 5 m_AnimatorParameters: [] m_AnimatorLayers: - serializedVersion: 5 m_Name: Base Layer m_StateMachine: {fileID: 1107732010857133768} m_Mask: {fileID: 0} m_Motions: [] m_Behaviours: [] m_BlendingMode: 0 m_SyncedLayerIndex: -1 m_DefaultWeight: 0 m_IKPass: 0 m_SyncedLayerAffectsTiming: 0 m_Controller: {fileID: 9100000} --- !u!1102 &1102462526423969762 AnimatorState: serializedVersion: 5 m_ObjectHideFlags: 1 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_Name: New State m_Speed: 1 m_CycleOffset: 0 m_Transitions: [] m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 m_WriteDefaultValues: 1 m_Mirror: 0 m_SpeedParameterActive: 0 m_MirrorParameterActive: 0 m_CycleOffsetParameterActive: 0 m_TimeParameterActive: 0 m_Motion: {fileID: 0} m_Tag: m_SpeedParameter: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: --- !u!1107 &1107732010857133768 AnimatorStateMachine: serializedVersion: 5 m_ObjectHideFlags: 1 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_Name: Base Layer m_ChildStates: - serializedVersion: 1 m_State: {fileID: 1102462526423969762} m_Position: {x: 270.93024, y: 126.44006, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: [] m_EntryTransitions: [] m_StateMachineTransitions: {} m_StateMachineBehaviours: [] m_AnyStatePosition: {x: 50, y: 20, z: 0} m_EntryPosition: {x: 50, y: 120, z: 0} m_ExitPosition: {x: 800, y: 120, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} m_DefaultState: {fileID: 1102462526423969762}
2.賦值動畫片斷:spa
%YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!91 &9100000 AnimatorController: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_Name: Empty serializedVersion: 5 m_AnimatorParameters: [] m_AnimatorLayers: - serializedVersion: 5 m_Name: Base Layer m_StateMachine: {fileID: 1107732010857133768} m_Mask: {fileID: 0} m_Motions: [] m_Behaviours: [] m_BlendingMode: 0 m_SyncedLayerIndex: -1 m_DefaultWeight: 0 m_IKPass: 0 m_SyncedLayerAffectsTiming: 0 m_Controller: {fileID: 9100000} --- !u!1102 &1102462526423969762 AnimatorState: serializedVersion: 5 m_ObjectHideFlags: 1 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_Name: New State m_Speed: 1 m_CycleOffset: 0 m_Transitions: [] m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 m_WriteDefaultValues: 1 m_Mirror: 0 m_SpeedParameterActive: 0 m_MirrorParameterActive: 0 m_CycleOffsetParameterActive: 0 m_TimeParameterActive: 0 m_Motion: {fileID: 7400000, guid: 1a354359c4913cf4b947f29cee104f48, type: 3} m_Tag: m_SpeedParameter: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: --- !u!1107 &1107732010857133768 AnimatorStateMachine: serializedVersion: 5 m_ObjectHideFlags: 1 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_Name: Base Layer m_ChildStates: - serializedVersion: 1 m_State: {fileID: 1102462526423969762} m_Position: {x: 270.93024, y: 126.44006, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: [] m_EntryTransitions: [] m_StateMachineTransitions: {} m_StateMachineBehaviours: [] m_AnyStatePosition: {x: 50, y: 20, z: 0} m_EntryPosition: {x: 50, y: 120, z: 0} m_ExitPosition: {x: 800, y: 120, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} m_DefaultState: {fileID: 1102462526423969762}
對比差別:3d
// 第43行 由: m_Motion: {fileID: 0} // 變成了 m_Motion: {fileID: 7400000, guid: 1a354359c4913cf4b947f29cee104f48, type: 3} // 這個guid就是動畫.meta的guid fileFormatVersion: 2 guid: 1a354359c4913cf4b947f29cee104f48
若是右鍵導出動畫控制器時關聯了無效的動畫片斷,能夠用以下方式解決:
1.找到關聯的無效動畫,用文本編輯器打開動畫.meta文件 查看動畫guid。
2.用文本編輯器打開動畫控制器xxx.controller。
找到與guid相同的m_Motion節點 還原爲m_Motion: {fileID: 0} 並保存。
3.右鍵導出動畫控制器,未關聯無效引用則證實刪除成功。code