资源优化:2、降低动画文件大小

2020-06-07  本文已影响0人  APP4x

前提:切换资源序列化模式为Force Text
(一般在公司就是这个,因为git只能用text)

打开*.anim文件,可以看到里面浮点数精度比较高,可以降低精度减少动画文件大小
(PS:小心美术diss你,他可能觉得动画不准了)

看一眼:

那么如何优化呢?

public static void ClearAnimation()
    {
        string title = "Clear Animation";

        Object[] objs = Selection.GetFiltered(typeof(AnimationClip), SelectionMode.DeepAssets);
        for (int i = 0; i < objs.Length; i++)
        {
            AnimationClip clip = objs[i] as AnimationClip;
            EditorUtility.DisplayProgressBar(title, "Clear In : " + clip.name, (i + 1) * 1f / objs.Length);
            if (clip)
            {
                EditorCurveBinding[] bindings = AnimationUtility.GetCurveBindings(clip);
                foreach (EditorCurveBinding binding in bindings)
                {
                    if (binding.propertyName.ToLower().Contains("scale"))//删减scale帧,一般都是rotattion和position
                    {
                        AnimationUtility.SetEditorCurve(clip, binding, null);
                    }

                    AnimationCurve curve = AnimationUtility.GetEditorCurve(clip, binding);//动画精度压缩 #.###
                    if (curve != null && curve.keys != null)
                    {
                        Keyframe[] keys = curve.keys;
                        for (int k = 0; k < keys.Length; k++)
                        {
                            Keyframe key = keys[k];
                            key.value = float.Parse(key.value.ToString("f3"));
                            key.inTangent = float.Parse(key.inTangent.ToString("f3"));
                            key.outTangent = float.Parse(key.outTangent.ToString("f3"));
                            keys[k] = key;
                        }
                        curve.keys = keys;

                        AnimationUtility.SetEditorCurve(clip, binding, curve);
                    }
                }
                EditorUtility.SetDirty(clip);
            }
        }
        EditorUtility.ClearProgressBar();
        AssetDatabase.SaveAssets();
    }

基本上能压缩50%以上,可以在insptector视图看压缩前后大小对比:

上一篇 下一篇

猜你喜欢

热点阅读