Version: 1.7
语言 : 中文
TextureManager 介绍
UI 使用介绍

TextureManager 用法

快速入门

为了帮助您轻松掌握 Texture Manager 的功能,我们建议您参考 Endless Runner 示例工程来学习如何有效地管理贴图资源。本文档将基于快速入门的基础上,向您介绍贴图管理的基本设置步骤和核心概念,更深入的功能细节和接口说明将在后续章节详细阐述。

步骤1:工程准备

步骤2:配置 TextureManager

  • 前往 Edit -> Project Settings 下的 Texture Manager Settings 页面,勾选 Texture Manager 打开 Texture Manager 功能。
  • 让贴图支持 Web Streaming:选中一张贴图,在 Inspector 面板的 Advanced 下勾选 Web Streaming ,可以设置 Priority Level 和 Uploaded Mode。 Demo 中我们将贴图的 Uploaded Mode 全部设置为 Uploaded_By_Reference
名称 描述
Priority Level 贴图上传优先级,通常我们认为项目中比较重要的贴图会设置 high,一般使用默认值即可。
Uploaded Mode 上传方式。
  • uploaded immediately:会被立即上传,上传时机和传统贴图一样;
  • uploaded reference:贴图只有被引用才会上传到GPU;
  • upload by renderer:被场景中的 mesh renderer 或者 skinned mesh renderer 引用的贴图才会被上传。
  • Tuanjie 1.1.2 或更高版本, 可以直接在 Edit -> Project Settings -> Texture Manager Settings 界面设置图片是否开启 Web Streaming。 如下图所示:

步骤3:多格式支持配置

不同平台的贴图压缩格式有各自的设置,需要确保 Texture Manager 的 WebStreamingData 能够适配不同的平台。

  • Edit -> Project Setttings -> Texture Manager Settings 中勾选 Texture Format Platform,如下图所示,为不同平台设置不同的贴图压缩格式;点击 Generate Texture Web Streaming Data ,生成 WebStreamingData 。

Generate Texture Web Streaming Data 目前在 OSX 和 Linux 平台不生效,需要自己主动调用 TextureManager.GenerateMultiPlatformWebStreamingDataInternal(string\[\] guids) 生成数据

  • 自定义脚本设置平台格式:
    • 示例:将以下代码加入在首场景运行的某个 MonoBehaviour 脚本中(需根据实际的运行环境自定义条件)。
//根据硬件环境切换TextureManager支持的格式。
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)]
static void OnBeforeSplashScreen()
{
    if (SystemInfo.graphicsDeviceName.Contains("RTX"))
        TextureManager.SetSupportTextureFromat("win");
    else
    {
        TextureManager.SetSupportTextureFromat("web");
    }
}

步骤4:打包工程

在工程中,如果资源有过更改,则需要完全重新打包;

  • 点击 AssetBundles -> Build AssetBundles 重新打包 AB;
  • 对于使用 TextureManager 的贴图资源,需要在 Edit -> Project Setttings -> TextureManagerSettings 中点击 Generate Texture Web Streaming Data 生成 WebStreamingData(步骤3中提及),并从 Library/TextureStreamingCache 中将 TexRes 文件夹手动上传到 UOS CDN 并创建新的发布版本,具体操作留意步骤7。

步骤5: 设置资源文件 CDN

这里我们以 UOS CDN 为例,介绍如何设置资源文件 CDN。

这里我们以UOS CDN为例,介绍如何设置资源文件CDN。 1. 前往 Unity Online Services 首页,点击 立即免费试用 进入应用面板。 2. 点击 + 新建应用,再点击 创建新的项目 创建一个名为 Endless_Runner 的项目,然后启用 UOS(如已有先前创建的 Endless_Runner 项目可直接启用)。 3. 进入 Bucket 列表,选择或者创建新的Bucket Endless_Runner; 4. 点击进入该 Bucket,切换到 RELEASES ,创建新的发布版本; 5. 点击 latest复制 Entry URL 前缀,该前缀将作为 Texture Manager 的CDN ,也是下一步骤中小游戏的游戏资源 CDN 。

注:UOS CDN 会为每一个 Bucket 自动生成一个名为 latest 的 badge ,每次上传文件,该 badge 位置都会自动更新,始终指向最新的资源版本,因此不要在提交给小游戏平台的版本中使用 latest ,以免后续资源更新时影响已发布版本。

  • Edit -> Project Settings -> Texture Manager Settings 中勾选Remote Load,将Entry URL前缀+ TexRes 填入CDN Route。
    • 如果是 Tuanjie 1.1.4 及更高版本,Remote Load 在 disable 情况下,会自动将纹理数据文件复制到首包 StreamingAssets 文件夹,自动按照应用的服务器地址下载应用 StreamingAssets 文件夹下的纹理数据。

步骤6: 资源缓存策略设置

以下步骤基于快速上手中的打包步骤,旨在帮助您基于上述 TextureManager 设置,完成目标平台的构建文件配置与打包。

  • 打包前,在确认基础通用配置已正确设置后,需要按照小游戏平台设置资源缓存策略:
    • 微信小游戏
      • 进入 微信小游戏转换工具面板,点击 更多配置项,或者选中 Assets > WX-WASM-SDK-V2 > EditorMiniGameConfig 文件,显示 Inspector 面板;
      • 在 Inspector 面板中 Project Conf -> Bundle Path Identifier 中加入 TexRes,将 TextureManager 资源文件加入下载缓存。
    • 抖音小游戏
      • 抖音小游戏通过下载域名匹配来确定资源缓存路径。
      • 抖音小游戏设置面板中的 缓存资源域名,填写完整域名路径(如 UOS CDN 域名 a.unity.cn/),确保贴图数据可以被正确缓存。
    • 平台相关的详细资源缓存规则,可前往各小游戏平台官网了解细节:

步骤7: TexRes 纹理数据部署

  • Library/TextureStreamingCache 下的 TexRes 文件夹上传到创建的 Bucket Endless_Runner
  • 切换到 RELEASES,创建新的发布版本。

注: 如游戏内有打包的 AssetBundle,请一同上传到 CDN 上。

注: 该步骤不限于 UOS CDN,可以使用本地的或者自己的服务器,只需将游戏资源 CDN 替换为自己的 URL 地址。

步骤8:开发者工具中打开工程

完成以上流程,您已顺利在团结引擎中实现对 Endless Runner 的小游戏进行 TextureManager 相关的配置与打包,接下来请根据您在导出时选择的目标平台,继续查看上传至对应开发者平台的操作指引。

Q&A

  1. Texture manager 主要解决什么问题?
    答:解决 WebGL 或者小游戏中项目中贴图资源使用不合理、资源包贴图资源冗余等问题导致的内存消耗以及多平台资源格式不同。目标是通过单独的资源管理模块实现对游戏项目中贴图资源的全生命周期管理。

  2. Texture manager 可以使用自己的 CDN 吗?
    答:可以,目前我们推荐采用 UOS 的 CDN ,后续我们会在集成 UOS CDN 的一些功能做资源的优化,如采用针对小文件性能友好的 H2 协议、通过 CDN 历史加载数据动态优化数据加载,版本控制管理等功能。

  3. Texture manager 目前支持的图片格式类型有哪些?
    答:普通的 Texture2D 格式、天空盒、Sprite( 2D and UI )、图集等均支持。

  4. 目前重度项目中有内部测试过吗,会存在哪些已知问题?
    答:目前在内部测试重度项目,过程中,主要是生成资源较慢,资源有的可能生成数据丢失难以定位,资源设置比较麻烦。针对这些问题,我们也在积极开发解决方案,如贴图数据并行生成,Texture Manager Browser Package 帮助用户集中管理贴图。

相关阅读

TextureManager 介绍
UI 使用介绍