如何在Git与CI中构建含第三方资产的Unity项目(不提交资产至仓库)
Unity第三方资产管理与CI构建合规方案
核心思路
只提交项目核心代码、依赖清单和许可证文件,第三方资产通过CI构建阶段自动拉取,避免将受版权保护的资产提交至Git仓库。
可行方案
1. Unity Package Manager(UPM)清单驱动下载
- 用UPM管理所有第三方资产,在
Packages/manifest.json和Packages/packages-lock.json中声明依赖(支持Asset Store、Git私有仓库、自定义注册表) - CI构建前执行Unity命令行恢复依赖:
unity-editor -quit -batchmode -nographics -restorePackages -username $UNITY_USERNAME -password $UNITY_PASSWORD - 注意:将Unity用户名、密码或认证令牌存储为GitHub Secrets,避免明文暴露;
-restorePackages会自动从配置来源下载所有缺失的包
2. Asset Store命令行定向下载
- 针对仅在Asset Store发布的资产,用Unity官方命令行工具指定资产ID下载:
unity-editor -quit -batchmode -nographics -assetStoreDownload <asset-id> -username $UNITY_USERNAME -password $UNITY_PASSWORD - 提前从Unity Asset Store资产页面URL提取目标资产ID
- 此方式适配未接入UPM的传统Asset Store资产
3. 私有资产仓库/缓存服务
- 搭建私有UPM仓库(如Nexus、Artifactory),将第三方资产上传至私有仓库后,在项目manifest中配置私有仓库地址
- 利用GitHub Actions缓存功能,减少重复下载耗时:
- name: Cache Unity Library uses: actions/cache@v3 with: path: Library key: ${{ runner.os }}-unity-library-${{ hashFiles('Packages/**') }} restore-keys: | ${{ runner.os }}-unity-library- - 私有仓库可严格控制访问权限,符合第三方资产的分发许可要求
4. 离线资产包+CI预下载脚本
- 将第三方资产打包为压缩包,存储在内部私有存储(如企业网盘、私有对象存储)
- CI构建阶段添加脚本,从私有存储下载压缩包并解压到项目对应目录:
# 示例:下载并解压到指定目录 wget https://your-private-storage/third-party-assets.zip unzip third-party-assets.zip -d Assets/ThirdParty/ - 此方案适用于不支持UPM的自定义资产或旧版本资源
合规注意事项
- 严格遵守第三方资产许可协议,确保CI环境仅用于内部构建,不对外分发资产
- 在项目仓库中保留第三方资产的许可证文件(如
LICENSE-ThirdParty目录),便于合规审计 - 避免将资产缓存到公开可访问位置,所有缓存仅在CI内部复用
内容的提问来源于stack exchange,提问作者DJ Spiess
相关产品推荐
相关产品推荐

