项目地址:
魔术师Dix / UPM解决方案:苍耳 · GitCode
1、什么是UPM
UPM,即是 Unity Package Manager 的简称,其官网介绍如下:
Unity - Manual: Unity's Package Managerhttps://docs.unity3d.com/Manual/Packages.html 其本身是Unity自带的一个窗口,用于管理各种 Unity 的 Pakcage,包括用户的商店资源,也是在这个窗口中获取以及管理。
但是本项目主要只是解决 package 包,也就是通常所说的插件管理。
2、为什么要使用苍耳
在进行Unity游戏开发的时候,一直有一个痛点,那便是相同功能的代码在不同项目之间如何共同使用?
例如我现在开发了一个数学库,做得很通用,可以在多个项目使用。现有的处理方式要么就是复制粘贴,更优雅一点的无非就是打个 unitypackage 包,然后手动导入。
但是这种模式就会有以下问题:
- 如果各个包之间有引用关系,如何处理?
- 如果开发人员将包升级了,各个项目如何升级?
- 导入包的方式如何做代码隔离(如果是开源的插件)?
- 如何方便地发布包,以及业务人员如何管理?
而苍耳就能完美解决上述痛点。
- 导入包时,会自动检测引用关系,并依次下载对应包(需要使用对应插件)。
- 当所需的 包/插件 升级时,能够在Unity 的窗口下看到升级提示,用户可以自行选择是否升级。而且升级的操作即为简单,点击 Update 即可完成升级。
- UPM 导入的 包/插件 是不可编辑的,不存在业务人员修改到核心代码的情况。
- UPM 包/插件 通过苍耳插件管理,会有一个可视化界面供用户使用,方便快捷。
3、苍耳的运作原理
如下图所示:
开发人员将插件通过工具或自行上传到Git服务器,这里可以是内网、外网,只要用户能够访问到即可。
用户通过Unity的管理窗口下载。
如果有版本更新,开发人员将插件上传后,用户通过苍耳提供的插件能自行查询到,从而自行决定是否需要更新版本。
3.1、插件上传
插件可以自行通过git命令上传,也可以通过工具上传。
强烈建议插件开发人员先阅读此文本:
【教程】开发Unity PackageManager 插件包
当然,也可以使用苍耳提供的可视化上传工具进行包上传和 package.json 的编辑:
UpmPublisher/Package · master · 魔术师Dix / UPM解决方案:苍耳 · GitCode
至于这个小工具的文档,这里不展开,详细说明参考其他文档。
3.2、插件包的下载
首先需要安装 Git !
这里Git不是小乌龟,是带命令行的Git,否则插件都拉不下来。
之后建议安装苍耳的Unity拓展,具体方法如下:
- 在 Unity 中打开 Window -> Package Manager
- 点击左上角的 ‘+’ 并选择 Add package form git URL
- 输入地址 :https://gitcode.net/cyf649669121/Cocklebur.git#UpmGitExtension
- 点击 Add 按钮并等待加载完成
完成安装之后,能够在窗口左上角看到一个Git的图标,即为安装成功。
这个插件其实根据一个开源项目改造的,使用方法也是一样的: https://github.com/mob-sakai/UpmGitExtensionhttps://github.com/mob-sakai/UpmGitExtension 原版插件的功能已经比较丰富了:
在第一版本的苍耳中,对此插件进行了如下优化:
- 修改之后的插件增加了调试功能,方便查看插件的异常。在Unity中启用 DEBUG_UPM_GIT 宏开启调试。
- 增加了引用自动下载,现在在包有依赖的情况,会自动下载已知路径的包。
- 修正了文档打开的功能,以前的版本在 UPM 中无法正确打开文档。
- 增加了自动处理引用的功能,现在会自己从已知库中拉取引用了。
- 适配到Unity 2021.3.12 和 2020.3.41
后续开发计划以及变动在项目文档中介绍。