unity序列帧优化—Addressables


前言

开发过程中,有可能遇到分辨率很大,数量也很多的序列帧动画需求,在甲方要求高清晰度 ,不能压缩的情况下,正常做成动画直接打包,1.5G的序列帧动画,打出来的包在3.5G左右,加载卡顿严重。在这种情况下,建议使用Addressable System进行处理。


一、导入Addressables System

当前unity版本为2018.2.11,打开Package Manager,在all中选择Addressables System,并Install,安装好之后可以在Window --> Asset Management --> Addressable Assets中打开Addressables窗口。
在这里插入图片描述

二、标记资源

1.拖入动画到自定义的目录下

在这里插入图片描述

2.资源编译打包

打包好的资源在AddressableAssetsData目录下

三、引用资源

选择要引用的controller,勾选Addressable,后边的地址就可以复制了,复制地址在代码中使用。
在这里插入图片描述

代码如下(示例):

 public Animator animator;

	void Start () {
        Addressables.LoadAsset<RuntimeAnimatorController>("Assets/背景的_00000.controller").Completed += OnLoadDone;
    }

    private void OnLoadDone(IAsyncOperation<RuntimeAnimatorController> data)
    {
        animator.runtimeAnimatorController = data.Result;
        animator.enabled = true;
    }

总结

按照这样的方法,一是资源无需重复编译,打包的时间大幅度缩小,二是加载时是先加载场景,再读取资源,可在界面添加加载资源提示,不会出现卡顿很久无法进入的情况。



补充

在后边项目的实际使用当中发现了一些问题,一块总结到下边。
1、实际打包中,只在一个 Group 中打包这些序列帧资源的话,超过一定量级依然出现资源加载异常,序列帧闪烁的情况
解决:将资源分配在多个Group中进行打包。在这里插入图片描述
2、上边文章中介绍的插件运行环境是2018.2.11的0.5.3版本,在2019.4.39版本中,我使用的是1.18.19版本的Addressables,上边提及的LoadAsset方法已经过时了,转而使用LoadAssetsAsync,但是不影响整体效果。而且新版也不会将资源自动编译放入 StreamingAssets文件夹中了,而是在Library\com.unity.addressables文件夹下,但是出包后依然在StreamingAssets中。

    public AssetLabelReference assetLabel;

    void Start()
    {
        Addressables.LoadAssetsAsync<RuntimeAnimatorController>(assetLabel, OnLoadDone);
    }

    /// <summary>
    /// 资源加载完成回调,此处可以加一个进度显示和交互限制,等待加载完毕之后再操作,防止异常
    /// </summary>
    /// <param name="animtorClip"></param>
    void OnLoadDone(RuntimeAnimatorController animtorClip)
    {
        Debug.Log(animtorClip.name);
    }

3、项目序列帧资源为240M,实测正常流程制作Animation打包大小为5.59G,使用Addressables后包体大小为388M(在对比过程中还有一个小发现,使用2019打包巨多序列帧的程序,实际运行时占用的内存空间是很小的,而2018中则需要申请巨大的空间,有了解其中原因的可以科普一下)。
2019出的包:在这里插入图片描述
2018出的包:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值