背景
我项目的代码中使用到了关于 wechat 的宏,wechat 的依赖程序集中有自己定义的编译条件宏,如果二者不一致,会导致项目代码和依赖使用不对齐,所以需要修改 wechat 依赖的编译条件宏。
首先,在 Unity 中,我们无法直接修改 UPM 的依赖,因为 UPM 是由 Unity 自动管理的,导入后会在 Packages 的 Read Only 目录下,所以无法直接修改。

所以需要采取一些策略,实现能够修改依赖中程序集定义的编译条件宏。
策略
- 引入 wechat 的方式不变,依旧是通过 UPM 引入
- 引入后,将 Packages ReadOnly 目录下的 wechat 依赖复制到 Packages 目录下, 这时候就不再是只读
- 修改编译条件宏
- 手动在项目 packages-lock.json 中追加依赖,version 参考 filesystem 中packages 中的版本


差异对比
UPM直接引入
项目mainifest.json文件
1 2 3 4
| "dependencies": { "com.qq.weixin.minigame": "https://github.com/wechat-miniprogram/minigame-tuanjie-transform-sdk.git", "com.unity.2d.sprite": "1.0.0", }
|
项目packages-lock.json文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| "dependencies": { "com.qq.weixin.minigame": { "version": "https://github.com/wechat-miniprogram/minigame-tuanjie-transform-sdk.git", "depth": 0, "source": "git", "dependencies": {}, "hash": "a5a5f32fbd7812f8acc76942cb027282fa42ab0f" }, "com.unity.2d.sprite": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} } }
|
wechat依赖mainifest.json文件
1 2 3
| "dependencies": { "com.qq.weixin.minigame": "https://github.com/wechat-miniprogram/minigame-tuanjie-transform-sdk" }
|
wechat依赖packages.json文件
1 2 3 4 5 6 7 8 9 10 11 12 13
| { "name": "com.qq.weixin.minigame", "displayName": "WXSDK", "description": "WeChat Mini Game Tuanjie Engine Adapter SDK Package.", "version": "0.1.24", "unity": "2019.4", "unityRelease": "29f1", "keywords": [ "Tuanjie", "WX" ], "dependencies": {} }
|
UPM引入后移动位置
项目 mainifest.json文件
不包含 wechat依赖
1 2 3 4 5 6 7 8 9 10
| "dependencies": { "com.unity.2d.sprite": "1.0.0", "com.unity.2d.tilemap": "1.0.0", "com.unity.ai.navigation": "1.1.5", "com.unity.analytics": "3.8.1", "com.unity.collab-proxy": "2.3.1", "com.unity.ide.rider": "3.0.28", "com.unity.ide.visualstudio": "2.0.22", "com.unity.ide.vscode": "1.2.5", }
|
项目 packages-lock.json文件
需要手动追加wechat 依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| "dependencies": { "com.qq.weixin.minigame": { "version": "file:com.qq.weixin.minigame@a5a5f32fbd", "depth": 0, "source": "embedded", "dependencies": {} }, "com.unity.2d.sprite": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} } }
|
wechat 依赖mainifest.json文件
1 2 3
| "dependencies": { "com.qq.weixin.minigame": "https://github.com/wechat-miniprogram/minigame-tuanjie-transform-sdk" }
|
wechat 依赖packages.json文件
1 2 3 4 5 6 7 8 9 10 11 12 13
| { "name": "com.qq.weixin.minigame", "displayName": "WXSDK", "description": "WeChat Mini Game Tuanjie Engine Adapter SDK Package.", "version": "0.1.24", "unity": "2019.4", "unityRelease": "29f1", "keywords": [ "Tuanjie", "WX" ], "dependencies": {} }
|
总结
手动移动 wx 依赖位置后,wx 依赖中的 mainifest.json文件和packages.json文件无需变更,但是项目中的mainifest.json文件和packages.json文件需要做相应调整