解决办法

  1. 关上游戏进入生效脚本所在页面后搜寻Log,如果有Could not produce class with ID XXX

相似字样,则实用于本问题

  1. 解决办法有3种:

    1. 点掉Player Settings->Other Settings->Strip Engine Code的对勾再从新打包(不举荐)
    2. 在Scene中找个没影响的中央退出这个脚本(退出脚本就行,不必其余配置)再打包(不举荐)
    3. 在[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文件夹下的文件,从新打包即可。