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

前提:切换资源序列化模式为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视图看压缩前后大小对比:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值