当前位置: 首页 > article >正文

Unity Addressables 系统处理 WebGL 打包本地资源的一种高效方式

为了在 WebGL 中更快捷地处理和使用本地资源文件(例如图片),一个非常便捷且高效的方式是使用 Unity Addressables 系统。Addressables 提供了对资源的高效管理,并且允许你在构建时将资源标记为 可按需加载,使得你能避免将所有资源一次性打包到构建包中,从而减小 WebGL 构建的体积。

 为什么选择 Addressables?
 按需加载:资源只在需要时加载,可以显著减小初次加载的时间。
 简化资源管理:资源的管理和版本控制更加高效,尤其适合 WebGL 等浏览器平台。
 支持远程和本地加载:可以从本地存储或者服务器加载资源。

 使用 Addressables 打包 WebGL 本地资源的步骤

 1. 安装 Addressables 包
首先确保你在 Unity 中启用了 Addressables 包。如果你尚未安装 Addressables,可以通过以下步骤安装:

1. 打开 Unity 编辑器。
2. 点击 Window > Package Manager。
3. 在 Package Manager 中,搜索 Addressables,并点击 Install 按钮。

 2. 设置资源为 Addressable
你需要将你想要打包和按需加载的资源标记为 Addressable,例如图片、音频、模型等。

1. 在 Project 窗口中,右键点击你的资源文件(例如 .png 图片文件),选择 Simplify > Mark as Addressable。
2. 在 Inspector 面板中,找到 Addressable 选项并勾选。Unity 会为这个资源分配一个 Addressable Asset 地址。
3. 可以为每个资源分配不同的地址(例如 "Textures/MyImage"),这样你可以通过地址加载资源。

 3. 配置 Addressables 组
你可以将资源分组,以便 Unity 在构建时处理它们。Addressables 会将资源打包成不同的组。

1. 打开 Window > Asset Management > Addressables,点击 Groups。
2. 在 Addressables Groups 窗口中,你可以创建一个新的组,或将已有的资源拖到不同的组中。这些组将决定资源在构建时如何打包。

 4. 构建 Addressables
在 WebGL 项目中,你可以将资源打包成 Addressables,并在 WebGL 环境中按需加载这些资源。

1. 打开 Window > Asset Management > Addressables。
2. 点击 Build,然后选择 Build Player Content,开始构建所有的 Addressable 资源。Unity 会生成并处理所有标记为 Addressable 的资源。

 5. 加载资源
在 WebGL 构建中,你可以按需加载资源。以下是一个加载纹理的例子:

csharp
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;

public class AddressableExample : MonoBehaviour
{
    void Start()
    {
        // 异步加载名为 "Textures/MyImage" 的纹理
        Addressables.LoadAssetAsync<Texture2D>("Textures/MyImage").Completed += OnTextureLoaded;
    }

    // 资源加载完成后回调
    void OnTextureLoaded(AsyncOperationHandle<Texture2D> handle)
    {
        if (handle.Status == AsyncOperationStatus.Succeeded)
        {
            Texture2D texture = handle.Result;
            // 使用加载的纹理
            Renderer renderer = GetComponent<Renderer>();
            renderer.material.mainTexture = texture;
        }
        else
        {
            Debug.LogError("纹理加载失败!");
        }
    }
}


 6. 打包 WebGL 构建
完成上述步骤后,你可以使用 Unity 进行 WebGL 构建:

1. 打开 File > Build Settings,选择 WebGL 平台。
2. 点击 Build,Unity 会将项目打包成 WebGL 格式。
3. 打包完成后,部署到 Web 服务器上进行测试。WebGL 会自动从构建包中加载和显示你的资源。

 额外优化:使用远程加载
Addressables 支持 远程加载,这意味着你可以将 Addressable 资源上传到远程服务器,并通过网络按需加载。

1. 配置远程资源:在 Addressables Groups 窗口中,右键点击组,选择 Build > Set Remote Build Path 来设置资源的远程路径。
2. 上传资源:将资源上传到你指定的服务器或云存储服务中。
3. 加载远程资源:使用相同的代码来加载资源,Unity 会从远程服务器加载这些资源。

例如,加载远程地址的代码示例:

csharp
Addressables.LoadAssetAsync<Texture2D>("https://myserver.com/Textures/MyImage").Completed += OnTextureLoaded;


 总结

Unity Addressables 系统是处理 WebGL 打包本地资源的一种高效方式,具备以下优点:
 按需加载:减少了 WebGL 的初始加载时间,避免了将所有资源打包到构建包中。
 资源优化:支持将资源打包为独立的文件,可以按需加载,降低了 WebGL 构建的体积。
 远程资源支持:可以将资源托管在远程服务器上,方便在 WebGL 中动态加载和更新资源。

只需标记资源为 Addressable 并构建 WebGL 项目,你就能高效地管理本地资源,并优化 WebGL 游戏的加载性能。

官方示例项目:
     https://github.com/Unity-Technologies/Addressables-Sample
    这个仓库提供了使用Addressables包的示例项目,可以帮助你快速上手并了解其基本用法。

 社区镜像:
     https://github.com/needle-mirror/com.unity.addressables
    这个仓库是Unity官方Addressables包的一个镜像,你可以在这里找到包的源代码、版本发布信息等。


http://www.kler.cn/a/384186.html

相关文章:

  • Cursor的chat与composer的使用体验分享
  • 2024.11.03 周报
  • 基于 EventBridge + DashVector 打造 RAG 全链路动态语义检索能力
  • 不愧是阿里巴巴最新开源的Java面试笔记,30万字精华总结 + 面试1300问附答案整理
  • Java 中的 transient 关键字:深入解析与实战
  • CUDA与OpenCL区别
  • Scala学习记录,List
  • 数据库中的用户管理和权限管理
  • 【Python有哪些应用场景】
  • JavaScript 23种经典设计模式简介
  • 萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
  • 青少年编程与数学 02-003 Go语言网络编程 07课题、客户端服务器模型
  • 躺平成长-利用kimi智能编辑助手开发小程序第(10)天
  • react-native:解决使用webView后部分场景在安卓10崩溃闪退问题
  • python-pyside2使用中遇到的 问题整理
  • 杭州网世:智慧医疗数据存储难题?网世科技双活方案来破解
  • 西门子KTP系列HMI用户自定义弹窗-多弹窗共用
  • 《深度学习》——深度学习基础知识(全连接神经网络)
  • 【Vue 全家桶】7、Vue UI组件库(更新中)
  • 如何利用探商宝精准营销,抓住行业机遇——以AI技术与大数据推动企业信息精准筛选
  • 《现代工业经济和信息化》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • WebStorm技巧
  • 选择排序js
  • 《重学Java设计模式》之 单例模式
  • Android Studio加载旧的安卓工程项目报错处理
  • 在内蒙考驾照需要注意什么呢?