public void SyncKeyFramesWithSimpleAnimator() { if (hitboxes == null) { return; } //simpleanimationに存在しないステートのデータがHitBoxesに入っている場合削除 var states = simpleAnimation.GetEditorStates(); hitboxes.data.RemoveAll(hitboxkeyval => !states.Any((s) => s.name == hitboxkeyval.Key)); foreach (var state in states) { //ToInt32は四捨五入するので、多少の誤差があっても正確にフレーム数を取得できる var numframe = Convert.ToInt32(state.clip.length * state.clip.frameRate); //keyframesの数が変化しない場合 if (hitboxes[state.name].keyframes.Count == numframe) { continue; } //keyframesが縮小する場合 else if (hitboxes[state.name].keyframes.Count > numframe) { hitboxes[state.name].keyframes.RemoveRange(numframe, hitboxes[state.name].keyframes.Count - numframe); } //keyframesが拡大する場合 else { var addSize = numframe - hitboxes[state.name].keyframes.Count; for (int i = 0; i < addSize; i++) { hitboxes[state.name].keyframes.Add(new KeyFrameData()); } } } }