assetsbundle包在不同特性版本之间的兼容性问题

我们基于 unity2021.3.6f1c1 打包了模型的 assetsbundle 包,交付给客户使用。

然而客户使用 unity2021.3.13f1c1 版本导入资源,反馈模型无法正常渲染。

unity editor 中运行时,发现控制台有类似下面这种告警:

image.png

Shader 'xxx' uses 153 texture parameters, more than the 64 supported by the current graphics device.

搜到了这篇帖子:https://forum.unity.com/threads/new-warning-about-texture-parameter-support-in-2021-3-10.1338212/

帖子里提到,资源在不同的子版本之间打包和导入,可能存在渲染异常。

经过一段时间的排查和调试,也踩了一些坑,得出下面的经验:

不同特性版本间打包和加载

特性版本1打 assetsbundle 包,特性版本2下加载,模型可能渲染正常,也可能shader无法工作导致渲染完全失效:
image.png

相同特性版本打包和加载,但是涉及到项目版本升级

使用 unity2021.3.13f1c1 打开以前基于 unity2021.3.6f1c1 创建的项目,打开的过程中 unity 提示涉及版本转换,点击 continue。

当前项目使用

打包模型的 assetsbundle,在当前项目中使用,渲染正常。

基于目标特性版本创建新项目使用

基于 unity2021.3.13f1c1 创建一个新的项目,加载上面打包的 assetsbundle,渲染看似正常,但是出现色差。
image.png
image.png

基于目标特性版本创建新项目并切换 target platform 使用

上面一个步骤, build target 是 win / mac / linux,将 build target 切换为 ios 或者 android,渲染出现异常,出现白色蒙层。

image.png

相同特性版本创建、打包和加载,不涉及到升级

加载后渲染完全正常,切换目标平台后渲染也正常。

基于 il2cpp 模式下代码优化问题

prefab上附带了 animator,结果使用 il2cpp 模式打包并在终端运行时,动画无法正常执行,无明显报错,只有一些告警信息,Could not produce class with ID 74

这个问题其实有在 unity 动画&音频控制、平台打包过程中遇到的坑 这里提到过,从今天的case来看,可能是由于 il2cpp 转换的过程中,没有处理到 assetsbundle 资源包,导致资源包加载后找不到相关类。

☞ 参与评论