当前位置:   article > 正文

Unity-托管代码剥离(link.xml使用)_unity link.xml

unity link.xml

Unity托管代码剥离的意义

托管代码剥离,不仅可以减少生成的dll的大小,继而减少安装包的体积,对于一些小型单机 游戏尤其重要,同时也可以提高构建代码的速度,提高项目的开发速度。

Unity托管代码的设置

点击 Player Settings->Player->Managed Stripping Level 进入如下菜单:
Unity2020.3.26

  • Low: 根据一种保守的原则来剥离代码,因此实际剥离的代码非常少,对于包的大小作用很小。这是unity的il2cpp的默认剥离级别.
  • Medium:在Low和High中取得平衡,即没有Low那么谨慎,也不会像High那么极端
  • High: 优先考虑的是包的大小,而不是可用性。对于可用性,是通过辅助的link.xml来进行人为保留需要的库里面的命名空间或者制定的类.

link.xml简单使用

  • 在Assets目录下或者其子目录下定义一个link.xml文件
  • 编写link.xml,如下格式
<linker>
   <!--整个程序集-->
   <assembly fullname="Unity.Mono" preserve="all"/>
   <assembly fullname="Unity.ThirdParty" preserve="all"/>
   <assembly fullname="UnityEngine" preserve="all"/>
   <!--指定程序集中的指定命名空间-->
   <assembly fullname="JsonDotNet">
       <namespace fullname="Newtonsoft.Json" preserve="all"/>
   </assembly>
   <!--指定程序集某个类-->
   <assembly fullname="mscorlib">
       <type fullname="System.Diagnostics" preserve="all"/>
   </assembly>
</linker>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 在构建时,Unity会使用一个专门用于托管代码剥离的工具UnityLinker来进行剥离处理,其默认将unity中用到的所有程序集合并程一个整体程序集,然后根据一定规则,比如场景中游戏对象继承Monobehavior的对象,标记根元素,再次有根元素进行依赖查询,并将其他依赖的程序集或类或命名空间进行打标记。最后没有被标记的,将会被裁剪剥离。UnityLinker在构建时,回检查link.xml文件,将里面设置的忽略的程序集或者类型直接标记为根元素。因此可以保证不会被剥离。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/115364
推荐阅读
相关标签
  

闽ICP备14008679号