解决办法
- 关上游戏进入生效脚本所在页面后搜寻 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 文件夹下的文件,从新打包即可。