【Unity】Unity项目转抖音小游戏(三)资源分包,抖音云CDN

业务需求,开始接触一下抖音小游戏相关的内容,开发过程中记录一下流程。

使用资源分包可以优化游戏启动速度,是抖音小游戏推荐的一种方式,抖音云也提供存放资源的CDN服务

抖音云官方文档:https://developer.open-douyin.com/docs/resource/zh-CN/developer/tools/cloud/develop-guide/cloud-function-debug

1.开通云环境:

详见这个文章:【Unity】Unity项目转抖音小游戏(二)云数据库和云函数

2.使用Addressables插件

1.packamagager安装addressables

2.对资源进行分组

【Windonw】-【Asset Management】-【Addressables】-【Groups】打开对应窗口

3.新建组并把所需资源放进去

4.修改资源加载代码

使用Addressables的异步资源加载代码,在回调中处理资源使用

一些参考代码:

csharp 复制代码
public void Load<T>(string key, Action<T> callback, bool autoRelease) where T : Object
        {
            if (isLoad)
            {
                if (handle.Status == AsyncOperationStatus.Succeeded)
                {
                    callback?.Invoke(handle.Result as T);
                    if (autoRelease)
                    {
                        Release();
                    }
                    return;
                }
            }
            isLoad = true;
            handle = Addressables.LoadAssetAsync<T>(key);
            handle.Completed += (p) =>
            {
                if (p.Status == AsyncOperationStatus.Succeeded)
                {
                    callback?.Invoke(p.Result as T);
                    if (autoRelease)
                    {
                        Release();
                    }
                }
            };
        }

        public void LoadAll<T>(string key, Action<IList<T>> callback, bool autoRelease) where T : Object
        {
            if (isLoad)
            {
                if (handle.Status == AsyncOperationStatus.Succeeded)
                {
                    callback?.Invoke(handle.Result as IList<T>);
                    if (autoRelease)
                    {
                        Release();
                    }
                    return;
                }
            }
            isLoad = true;
            handle = Addressables.LoadAssetsAsync<T>(key, null);
            handle.Completed += (p) =>
            {
                if (p.Status == AsyncOperationStatus.Succeeded)
                {
                    callback?.Invoke(p.Result as IList<T>);
                    if (autoRelease)
                    {
                        Release();
                    }
                }
            };
        }

        public void Release()
        {
            if (isLoad)
            {
                isLoad = false;
                Addressables.Release(handle);
            }
        }
    }

3.使用CDN加载资源

1.开通CDN

进入抖音云后台【组件中心】-【对象存储】-【开通】开通CDN服务

2.开通之后上传一个文件到抖音云,并点击查看详情获取CDN地址

3.配置Addressables的加载地址

再次打开Addressables的资源界面

选中一个组,把资源的BuildPath和LocalPath设置成【Remoe】远程加载

【Windonw】-【Asset Management】-【Addressables】-【Profiles】打开对应窗口

输入路径:

Remote BuildPath是你输出打包资源的路径,一般是版本+[BuildTarget]

Remote LoadPath是你资源包加载的路径,一般是CDN路径+版本+[BuildTarget]

这里添加版本号信息便于版本管理和区分。

回到Groups窗口,点击【Build】-【New Build】-【Default Build Script】来进行打包资源,打出来的资源会在你上面配置的【Remote BuildPath】当中

回到抖音云平台,把新的资源上传到【Remote LoadPath】当中。

完成操作

相关推荐
游乐码1 天前
UnityGUI(五)GUI控件综合使用
开发语言·unity·c#
LF男男1 天前
TshitBullect.cs
unity
游乐码1 天前
Unity(十六)切换场景及鼠标相关
unity·游戏引擎
FakeEnd1 天前
Unity开发笔记6
笔记·unity·游戏引擎
游乐码1 天前
Unity(十七)Unity随机数及Unity委托
unity·游戏引擎
ellis19701 天前
Unity性能优化之检测工具Profiler
unity·性能优化
RPGMZ2 天前
RPGMZ游戏引擎 一个窗口 文本居中显示
开发语言·javascript·游戏引擎·rpgmz
tohand2 天前
Unity 完美假阴影实现文档
unity·游戏引擎
@蓝莓果粒茶2 天前
【Unity笔记】保姆级AssetBundle详解(含代码+避坑指南)
笔记·游戏·unity
Zephyr_02 天前
Unity2D游戏制作
游戏·unity