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 按钮。

  4. 设置资源为 Addressable

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

  1. 在 Project 窗口中,右键点击你的资源文件(例如 .png 图片文件),选择 Simplify > Mark as Addressable。

  2. 在 Inspector 面板中,找到 Addressable 选项并勾选。Unity 会为这个资源分配一个 Addressable Asset 地址。

  3. 可以为每个资源分配不同的地址(例如 "Textures/MyImage"),这样你可以通过地址加载资源。

  4. 配置 Addressables 组

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

  1. 打开 Window > Asset Management > Addressables,点击 Groups。

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

  3. 构建 Addressables

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

  1. 打开 Window > Asset Management > Addressables。

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

  3. 加载资源

在 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("纹理加载失败!");

}

}

}

  1. 打包 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包的一个镜像,你可以在这里找到包的源代码、版本发布信息等。

相关推荐
mxwin1 天前
unity shader中 ddx ddy是什么
unity·游戏引擎·shader
郝学胜-神的一滴1 天前
[简化版 GAMES 101] 计算机图形学 08:三角形光栅化上
c++·unity·游戏引擎·godot·图形渲染·opengl·unreal
nnsix1 天前
Unity ILRuntime 笔记
unity·游戏引擎
nnsix1 天前
Unity API 兼容的 .NET Standard 2.1 和 .NET Framework 区别
unity·游戏引擎·.net
mxwin1 天前
Unity Shader 制作半透明物体 使用多Pass提前写入深度的方式 避免穿模
unity·游戏引擎
nnsix1 天前
Unity HybridCLR 笔记
笔记·unity·游戏引擎
nnsix1 天前
Unity Addressables 笔记
unity·游戏引擎
RReality1 天前
【Unity Shader URP】视差贴图 实战教程
ui·平面·unity·游戏引擎·图形渲染·贴图
小清兔2 天前
Addressable的设置打包流程
笔记·游戏·unity·c#
3D霸霸2 天前
Sourcetree 拉取新工程
数据仓库·unity