问题
这两天遇到一个问题,在VR项目打包Android的时候,加载场景后,Timeline工作不正常,找不到原因。
现象
看到有很多警告,丢失脚本的Log。
因为场景本身也有一些丢失的脚本所以没在意,但是又不是所有脚本都丢失。至少Timeline在工作。
一直以为是Timeline的问题,后来在Timeline激活的某个脚本的Awake上加Log,发现竟然没有输出,那么就是脚本丢失了。
解决
考虑到这里就发现忽视了IL2CPP Stripping Level等级问题。之前项目是Unity的2021,升级到2022后默认选择的Low级别。
看了2022的帮助文档,Low级别可能会搜索一些用户的未使用的脚本进行删除,所以这就是问题的原因了,选到Minimal就好了。或者使用mono吧。
官方原文
Low : Unity searches some user-written assemblies and all UnityEngine and .NET class libraries for unused code. This setting applies a set of rules that removes some unused code but minimizes the likelihood of unintended consequences, such as changes in behavior of runtime code that uses reflection.
2021的Low就是最低级别,2022之下还有一个Minimal。
当时考虑到是Stripping的问题,但是就是看了下就是Low就没管了,然后看了2021的文档,也没发现问题。2022还是有点区别。