关于unity:关于AB包中的-Sprite-Mask-在打iOS包后失效的问题适用于各种脚本在打包后失效

解决办法

  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文件夹下的文件,从新打包即可。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理