为了帮助您轻松掌握 Texture Manager 的功能,我们建议您参考 Endless Runner 示例工程来学习如何有效地管理贴图资源。本文档将基于面向微信小游戏的打包和发布,向您介绍贴图管理的基本设置步骤和核心概念,更深入的功能细节和接口说明将在后续章节详细阐述。
这一步需要保证你的引擎版本是正确的,并且已经安装了 MiniGame。
之所以需要更换到 OpenGLES3 ,主要是因为无论是小游戏还是 WebGL 平台,渲染都是都是基于 OpenGLES 的API,为了在编辑器中模拟加载平台资源包,需要将编辑器设置到 OpenGLES3 。
让贴图支持 Web Streaming:
选中一张贴图,在 Inspector 面板的 Advanced 下勾选 Web Streaming ,可以设置 Priority Level 和 Uploaded Mode 。demo 中我们将贴图的 Uploaded Mode 全部设置为 Uploaded Reference。
Priority Level:贴图上传优先级,通常我们认为项目中比较重要的贴图会设置 high,一般使用默认值即可;
Uploaded Mode:上传方式,uploaded immediately 会被立即上传,上传时机和传统贴图一样;uploaded reference 贴图只有被引用才会上传到GPU;upload by renderer 被场景中的 mesh renderer 或者 skinned mesh renderer 引用的贴图才会被上传。
导入 Package TextureManagerUtility;
点击 Texture Manager -> Set Texture WebStreaming 可为所有的贴图资源勾选上WebStreaming。
不同平台的贴图压缩格式有各自的设置,需要确保 Texture Manager 的 WebStreamingData 能够适配不同的平台。
Generate Texture Web Streaming Data 目前在OSX和Linux 平台不生效,需要自己主动调用TextureManager.GenerateMultiPlatformWebStreamingDataInternal(string\[\] guids)
生成数据
//根据硬件环境切换TextureManager支持的格式。
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)]
static void OnBeforeSplashScreen()
{
if (SystemInfo.graphicsDeviceName.Contains("RTX"))
TextureManager.SetSupportTextureFromat("win");
else
{
TextureManager.SetSupportTextureFromat("web");
}
}
Library/TextureStreamingCache
中将 TexRes 文件夹手动上传到 UOS CDN 并创建新的发布版本,具体操作留意步骤7。Endless_Runner
;注:UOS CDN 会为每一个 Bucket 自动生成一个名为 latest 的 badge ,每次上传文件,该 badge 位置都会自动更新,始终指向最新的资源版本,因此不要在提交给小游戏平台的版本中使用 latest ,以免后续资源更新时影响已发布版本。(参考快速上手步骤六,可以在 UOS 网页上创建 Badge ,也可在项目 Window -> AutoStreaming -> Cfg&Publish 中管理)
注:Remove 一次后,可能没完全移除,需要再 Remove 一次。
打开 微信小游戏 -> 微信小游戏转换工具面板 或参考快速入门的小游戏构建配置文件 。在这里有以下几个参数需要填写:
名称 | 描述 |
---|---|
游戏appid | 可从微信小游戏开发工具的 Create Mini Game 界面点击 Register 申请正式AppID,或者先点击 Test Account 获取测试 AppID ; 注:不要获取 Mini Program 的 AppID,否则转换工具生成的是小程序; |
游戏资源CDN | 游戏资源 CDN 根目录。 注:填入上一步骤 Entry URL 前缀;若配置了 AutoStreaming 会自动填充; |
小游戏项目名称 | 导出的微信小游戏项目名称; |
游戏方向 | 横竖屏,根据游戏画面选择(默认 Portrait 竖屏); |
导出路径 | 生成微信小游戏工程的位置,后续步骤需要打开其中的小游戏目录。 |
注:打包时如果遇到下面的报错,请确认安装了 node.js ,并且在系统环境变量的 path 中添加了 node.js 安装路径。
Endless_Runner
。注:该步骤不限于 UOS CDN,可以使用本地的或者自己的服务器,只需将游戏资源 CDN 替换为自己的 IP 地址。
Library/TextureStreamingCache
下的 TexRes 文件夹上传到创建的 Bucket Endless_Runner
。注:生成并转换 小游戏会使 xxxx.webgl.data.unityweb.bin.txt
文件被更新,需要在 UOS CDN 上更新并创建新的发布版本。
请核对 game.js 中的 DATA_CDN 是否正确
如果出现以下问题,可能原因如下:
url 不对,需要仔细核对;
没有创建新的发布版本;
资源上传到 UOS CDN 会有一定的延迟,需要等待一段时间重试。
Texture manager 主要解决什么问题?
答:解决 WebGL 或者小游戏中项目中贴图资源使用不合理、资源包贴图资源冗余等问题导致的内存消耗以及多平台资源格式不同。目标是通过单独的资源管理模块实现对游戏项目中贴图资源的全生命周期管理。
Texture manager 可以使用自己的 CDN 吗?
答:可以,目前我们推荐采用 UOS 的 CDN ,后续我们会在集成 UOS CDN 的一些功能做资源的优化,如采用针对小文件性能友好的 H2 协议、通过 CDN 历史加载数据动态优化数据加载,版本控制管理等功能。
Texture manager 目前支持的图片格式类型有哪些?
答:普通的 Texture2D 格式、天空盒、Sprite( 2D and UI )、图集等均支持。
目前重度项目中有内部测试过吗,会存在哪些已知问题?
答:目前在内部测试重度项目,过程中,主要是生成资源较慢,资源有的可能生成数据丢失难以定位,资源设置比较麻烦。针对这些问题,我们也在积极开发解决方案,如贴图数据并行生成,Texture Manager Browser Package 帮助用户集中管理贴图。