public override void OnInspectorGUI() { base.OnInspectorGUI(); ACTAnimConfig animcfg = target as ACTAnimConfig; if (null == animcfg) { return; } if (GUILayout.Button("Refresh")) { Refresh(animcfg); } if (GUILayout.Button(string.Format("Reset Anim"))) { Animator animator = animcfg.gameObject.GetComponentInChildren <Animator>(); if (animator == null) { return; } animator.SetInteger("Attack", 0); } MoveNodeName = GUILayout.TextField(MoveNodeName, GUILayout.Width(300)); for (int i = 0; i < animcfg.keyDatas.Count; i++) { if (animcfg.keyDatas[i] == null) { continue; } if (GUILayout.Button(string.Format("test anim {0} {1}", animcfg.keyDatas[i].AnimclipName, animcfg.keyDatas[i].ParamValue))) { animcfg.TestAnim(animcfg.keyDatas[i]); } } }
void ExportAnim(AnimationClip animclip, ACTAnimConfig animcfg) { if (animclip == null) { return; } maxcounter = (int)(animclip.length / (1f / 30f) + 0.5f) + 1; int[] xs = new int[maxcounter]; int[] ys = new int[maxcounter]; int[] zs = new int[maxcounter]; foreach (EditorCurveBinding theCurveBinding in AnimationUtility.GetCurveBindings(animclip)) { string name = theCurveBinding.propertyName.ToLower(); //Debug.Log("************** " + theCurveBinding.path + " : " + name); if (theCurveBinding.path == MoveNodeName && name.Contains("position")) { Debug.Log("************** " + theCurveBinding.path + " : " + name); AnimationCurve testcurve = AnimationUtility.GetEditorCurve(animclip, theCurveBinding); if (name.Contains(".x")) { ExportKeyData(ref xs, testcurve); } else if (name.Contains(".y")) { //ExportKeyData(ref ys, testcurve); } else if (name.Contains(".z")) { ExportKeyData(ref zs, testcurve); } //hasposition = true; if (!name.Contains(".y")) { AnimationUtility.SetEditorCurve(animclip, theCurveBinding, null); } } } AnimClipKeyData data = new AnimClipKeyData(xs, ys, zs, animclip.name); animcfg.keyDatas.Add(data); }
private void Refresh(ACTAnimConfig animcfg) { int animcounter = animcfg.AnimClips.Count; animcfg.keyDatas = new System.Collections.Generic.List <AnimClipKeyData>(animcounter); for (int i = 0; i < animcounter; i++) { if (animcfg.AnimClips[i] == null) { continue; } ExportAnim(animcfg.AnimClips[i], animcfg); var so = new SerializedObject(animcfg.AnimClips[i]); so.FindProperty("m_EditorCurves").arraySize = 0; so.FindProperty("m_EulerEditorCurves").arraySize = 0; so.ApplyModifiedProperties(); EditorUtility.SetDirty(animcfg.AnimClips[i]); } AssetDatabase.SaveAssets(); }