

unity 资源包版本兼容性问题及il2cpp模式下代码优化问题
source link: https://www.zoucz.com/blog/2023/02/14/31132b00-ac59-11ed-9fa0-5dbc93f9d3ee/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

unity 资源包版本兼容性问题及il2cpp模式下代码优化问题
assetsbundle包在不同特性版本之间的兼容性问题
我们基于 unity2021.3.6f1c1 打包了模型的 assetsbundle 包,交付给客户使用。 我要说话
然而客户使用 unity2021.3.13f1c1 版本导入资源,反馈模型无法正常渲染。 我要说话
unity editor 中运行时,发现控制台有类似下面这种告警: 我要说话

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无法工作导致渲染完全失效:

相同特性版本打包和加载,但是涉及到项目版本升级
使用 unity2021.3.13f1c1 打开以前基于 unity2021.3.6f1c1 创建的项目,打开的过程中 unity 提示涉及版本转换,点击 continue。 我要说话
当前项目使用
打包模型的 assetsbundle,在当前项目中使用,渲染正常。 我要说话
基于目标特性版本创建新项目使用
基于 unity2021.3.13f1c1 创建一个新的项目,加载上面打包的 assetsbundle,渲染看似正常,但是出现色差。


基于目标特性版本创建新项目并切换 target platform 使用
上面一个步骤, build target 是 win / mac / linux,将 build target 切换为 ios 或者 android,渲染出现异常,出现白色蒙层。 我要说话

相同特性版本创建、打包和加载,不涉及到升级
加载后渲染完全正常,切换目标平台后渲染也正常。 我要说话
基于 il2cpp 模式下代码优化问题
prefab上附带了 animator,结果使用 il2cpp 模式打包并在终端运行时,动画无法正常执行,无明显报错,只有一些告警信息,Could not produce class with ID 74
。 我要说话
这个问题其实有在 unity 动画&音频控制、平台打包过程中遇到的坑 这里提到过,从今天的case来看,可能是由于 il2cpp 转换的过程中,没有处理到 assetsbundle 资源包,导致资源包加载后找不到相关类。我要说话
本文链接:https://www.zoucz.com/blog/2023/02/14/31132b00-ac59-11ed-9fa0-5dbc93f9d3ee/我要说话
☞ 参与评论我要说话
Recommend
-
41
-
42
govendor 是 go 的一个比较好用包版本管理工具。主要用来保证 go 项目在协同开发或发版部署时,保证部署安装的依赖包版本对当前项目是稳定可用的。 为什么要使用包版本管...
-
22
这是ConardLi的第 69 篇原创,谢谢你的支持! Nodejs 成功离不开 npm 优秀的依赖管理系统。在介绍整个依赖系统之前,必须要了解 npm 如何管理依赖包...
-
5
es~依赖包版本对索引初始化的影响 es依赖包我们通常指两个org.elasticsearch:elastic...
-
8
dotnet 根据基线包版本实现库版本兼容 本文来告诉大家如何根据 基线包版本 的功能来实现自动在构建过程中,告诉开发者,当前版本是否存在不兼容旧版本的变更。其不兼容变更包括二进制中断变更和 API 不兼容变更和源代码中断变更。可以让库开发者花...
-
8
V2EX › 程序员 ASP.NET Core 存在类似 il2Cpp 这种可以把 C#代码转换成 C++代码编译来防止逆向获得原始代码的黑...
-
3
unity il2cpp导出时生成符号表排查crash问题 作者: 邹成卓 2022-11-30 20:46:26 分类:
-
5
在性能优化时,你是否也遇到过这样的困扰:和性能相关的参数非常多,为什么能保障广度,就没法保障深度?这是因为数据的获取本身存在打点消耗,如果获取全量数据势必存在大量打点操作,导致收集的数据失真。原先大家使用的GOT Online测评就分为4个模式单独采集,也正...
-
5
1)在Runtime下,IL2CPP与Mono打包对应的PSS内存占用问题 2)获得AssetBundle内部依赖关系的方法 3)Unity 2019 Streaming Mipmap在某些情况下采样等级错误 4)根据RenderDoc的数据,计算渲染量 这是第322篇UWA技术知识分享的推送...
-
5
如何使用nvm来管理不同版本的 Node.js,然后使用不同的 Node.js 版本来运行不同版本的 React 应用?
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK