定制 Unity BuildIn Package

目标 & 背景

内网 Package 管理 这篇文章中我们提到了如何自建 npm 工具包,整合 unity 官方 package 和公司自定义的私有 package

此时就会碰到一个新的问题,如果我们修改了 unity 内建的 package 时,就必须要考虑如何适配的问题

比如:项目中自定义的 UI 框架中,需要对现有的 com.unity.ugui 源码进行修改,此时需要使用项目自定义的 ugui 源码,而非内建的,但是,其他插件同时设置 ugui 为包引用,unity 会自动将 ugui 的包引入 package managaer 中

在这种情况下,就必须要解决这个依赖问题

解决方案

实际解决方式非常简单,我们强制修改 manifest.json 文件中 com.unity.ugui 对应的 version 为 git 仓库的链接,或者直接将定制的 ugui 源码丢到 Packages 文件夹,然后从本地进行加载

...
"com.unity.ugui": "ssh://xxxx.git?path=Assets#tag=你的版本号"
或
"com.unity.ugui": "../Packages/com.unity.ugui"
...

这里更推荐使用 git 链接的方式,我们将自定义 ugui 统一存放在公司内网中的 git 上,同时仓库为 public 权限,但是,由于 ugui 本身和引擎代码具有绑定关系,我们还需要额外增加 git tag 用于标记当前 ugui 源码可以在哪些版本的引擎上使用

最优的方案是可以通过 package manager 中 scope 功能覆盖内建 package,但是在我的尝试下,并未成功