PackageManager调研

UnityPackageManager(UPM)与Nuget相比有2个主要优点

  1. 支持包以C#源码发布,在U3D工程中支持源码调试
  2. 支持Unity原生资源格式Assets, Shaders, Textures等,方便资源管理

UPM缺点

  1. 包的安装和配置离不开Unity环境,如图一所示;目前虚拟实验室的应用的结构如图二所示,如果将所有的component都改造成UPM的Package,改造工作量偏大。
  2. 以源码的方式发布UPM Package,以internal定义的类,存在冲突的可能性

图一 UPM使用


图二 虚拟实验室现有结构

总结

  1. 短期内不建议使用UPM
    理由1:是代价比较大,组件仓库都要去做一次调整,现有基于nuget的工具链都要做改造,调整过程会必然会有功能不稳定的情况,影响下游功能发布;
    理由2:UPM一大优点是可以发布源码,方便在U3D工程中调试,基于nuget的dll发布,可以把coomitid写入dll,在线上问题需要排查的时候,通过另外的工具找到对应的源码,重新编译后,也能实现调试功能。
  2. 纯资源类的可以考虑使用UPM,典型的例子是字体文件,需要在各个应用之间共享,UPM比用Nuget更好管理。

参考文档

张毅同学的调研报告