【Unity】Addressables在微信小游戏中使用缓存

目前越来越多的Unity项目转微信小游戏,其中对于资源加载的策略,Unity官方提供的Addressables无疑是最优的方案之一。

缓存路径

按照微信提供的 微信小游戏资源缓存说明 思路做一般不会有问题,但有个细节坑就是
在这里插入图片描述
图中DATA_CDN为微信插件填写的cdn地址,首包资源和预下载资源均放在此处。
而图中请求路径必须以DATA_CDN开头构建。这点尤为重要!
在内网测试时地址容易填写端口号,而在微信小游戏开发工具里会去掉端口号导致无法缓存。

资源唯一标识

在小游戏文档里说”URL包含自动缓存路径标识符的文件“,这个路径标识符在unity的转换插件里默认填写为StreamingAssets。但我们可以自定义这个标识符。在触发网络请求的路径中只要包含这个标识就会识别为可缓存。

Addressables的缓存初始化设置

创建aa的CacheInitializationSettings,将该CacheInitializationSettings添加到AddressableAssetSettings的InitializationObjects中。
在这里插入图片描述

Addressable Asset System 是 Unity 的一种资源管理系统,可以让您更方便地加载、卸载和管理资源。AtlasMap 是 Addressable 的一种功能,用于将图集打包成一个单独的资源,从而方便管理和加载。以下是使用 AtlasMap 的步骤: 1. 创建一个 AtlasMap 资源。在 Unity 的 Project 窗口中,右键单击 Assets 文件夹,选择 Create > Addressables > Atlas Map。 2. 给 AtlasMap 资源命名,并选择要包含在此 AtlasMap 中的 Sprite 图像。可以通过拖放将 Sprite 图像添加到 AtlasMap 中。 3. 在 Unity 的菜单栏中选择 Window > Asset Management > Addressables,打开 Addressable 窗口。在这里,您可以看到已经创建的 AtlasMap 资源。 4. 创建一个新的 Addressable Group,并将 AtlasMap 资源添加到该 Group 中。 5. 在代码中加载 AtlasMap 资源。可以使用 Addressable Asset System 提供的 API 加载 AtlasMap 资源,并使用其中包含的 Sprite 图像创建 SpriteAtlas。 以下是一个简单的示例代码: ```csharp using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations; public class AtlasMapExample : MonoBehaviour { public AssetReference atlasMapReference; private AsyncOperationHandle<SpriteAtlas> handle; private void Start() { handle = atlasMapReference.LoadAssetAsync<SpriteAtlas>(); handle.Completed += OnLoadCompleted; } private void OnLoadCompleted(AsyncOperationHandle<SpriteAtlas> handle) { SpriteAtlas spriteAtlas = handle.Result; // Use the sprite atlas to get sprites } private void OnDestroy() { Addressables.Release(handle); } } ``` 在上面的示例代码中,首先使用 Addressable Asset System 提供的 API 异步加载 AtlasMap 资源。当加载完成后,可以使用加载的 SpriteAtlas 获取其中包含的 Sprite 图像。注意,在代码结束时需要释放 AsyncOperationHandle 对象以避免内存泄漏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值