美文网首页
关于AB包中的 Sprite Mask 在打iOS包后失效的问题

关于AB包中的 Sprite Mask 在打iOS包后失效的问题

作者: 枢机主教_ | 来源:发表于2020-12-01 15:30 被阅读0次

    解决方法

    1. 打开游戏进入失效脚本所在页面后搜索Log,如果有Could not produce class with ID XXX
      类似字样,则适用于本问题

    2. 解决方法有3种:

      1. 点掉Player Settings->Other Settings->Strip Engine Code的对勾再重新打包(不推荐)
      2. 在Scene中找个没影响的地方加入这个脚本(加入脚本就行,不用其他配置)再打包(不推荐)
      3. http://docs.unity3d.com/Manual/ClassIDReference.html里找到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文件夹下的文件,重新打包即可。

    相关文章

      网友评论

          本文标题:关于AB包中的 Sprite Mask 在打iOS包后失效的问题

          本文链接:https://www.haomeiwen.com/subject/obeswktx.html