解决办法
- 关上游戏进入生效脚本所在页面后搜寻Log,如果有
Could not produce class with ID XXX
相似字样,则实用于本问题
解决办法有3种:
- 点掉Player Settings->Other Settings->Strip Engine Code的对勾再从新打包(不举荐)
- 在Scene中找个没影响的中央退出这个脚本(退出脚本就行,不必其余配置)再打包(不举荐)
- 在[http://docs.unity3d.com/Manua...]()里找到ID 所对应的类名,而后在Assets里退出一个Link.xml再打包(举荐)
Link.xml内容如下(以 ID 331为例):
<linker> <assembly fullname="UnityEngine"> <type fullname="UnityEngine.SpriteMask" preserve="all"/> </assembly></linker>
起因
- 这是因为你在Player Settings->Other Settings->Strip Engine Code里打钩了。这个选项顾名思义,是容许Unity在打包时候剥离一部分的代码以节俭空间。你的脚本没有失效是因为它在这个时候给剥离掉了。
- 那么如何让零碎不剥离呢?第一个办法是不必AB包加载,间接在Scene外面放一个被剥离脚本,这样在编译时零碎就会检测到你用了这个脚本,便主动增加成例外,不再剥离。在iOS工程中,这一点反映在TypesInScenes.xml文件里。
- 不过更正规的办法是用Link.xml,让增加Strip的例外脚本,简略又洁净。在iOS工程中Strip例外的脚本都会存在EditorToUnityLinkerData.json里。
其余
如果采纳了以上办法后发现Xcode工程启动即闪退,那么删除工程中Classes->Natice文件夹下的文件和Data文件夹下的文件,从新打包即可。