UnityPackageManager相关
自己写的框架功能等在二次使用时的导出,还需要手动选择导出的部分,虽然可以写工具解决,但考虑到unity带的这个包管理方案,一是官方在使用,二是之前公司也用过通过UPM来管理功能插件。所以决定做一个自己的包,顺便实际用一遍。
UnityPackageManager官方文档
知识点记录
UPM不支持使用StreamingAssets,推荐使用Addressables
打开unity project工程,unity会从Packages文件夹的manifest.json中,查找需要加载的包,发送请求获取包并安装到项目中。
可以直接修改manifest.json添加包依赖,也可以在PackageManager中添加(推荐)
包需要外部依赖时,需要在配置表的 dependencies中引入包
unity下载的包会放在全局缓存文件夹中,方便被本地不同的项目引入
【可以通过配置PackageManager的配置文件,来修改获取包的网络环境,自定义注册表,自定义资源地址官方介绍】配置注册表
多个包之间依赖项的处理多个依赖的处理
Git管理包流程
1.需要有git仓库,这里用github
github存放思路:我是main里放所有工程文件,upm分支做下载用;(在从git导入package到工程时,git的url需要加#upm分支名)
2.正常编辑包工程,保存并提交到main主干
3.git subtree split --prefix=Assets/packagename --branch upm
从主干切取package文件,将文件拉到分支upm里
4.git tag 0.1.0 upm
打标签
5.git push origin upm --tags
提交到远程分支
注意:包名等不规范会导致脚本用不了
问题:package导入的包,都不能够编辑;虽然可以从Library的packagecache中复制到工程里,但感觉不好。
为什么有的包导入就是导入到Assets(原始的package导入)
问题:
git发布的包里依赖项,无法加载,除非自己配置upm服务器,通过版本号拿;依赖项的git url无法解析【用别人写的git获取包插件】
通过npm服务器https://registry.npmjs.org/来进行依赖的版本引入
工作流:
1.github管理功能插件的开发和upm包
2.将upm包传到npm服务器上
3.工程里配置npm服务器地址
可以形成公网的插件获取下载,以及包的依赖问题解决
node.js安装
注册npm账号
npm地址
操作流程
从头创建功能插件并提交github以及npm
- 新建unity项目
- Assets下创建插件包名(注意命名规范)
- 编辑功能
- 插件包文件夹创建package.json,内容编辑(有依赖的需要写上依赖)
- 对应创建程序集引用(注意程序集的命名规范)
- github上传工程并切分支
git init//生成本地仓库
git remote add origin (git地址)//连接远程仓库
git pull origin main//拉远程数据更新
//如果仓库名称不对需要改名称
//git branch -m old_name new_name将本地仓库的old_name的名称修改为new_name
git add *//提交所有修改(插件工程)到缓存
git commit -m "说明"//提交更改
git push origin main//更新推到远程
git subtree split --prefix=(package包路径) --branch upm //切取包文件到upm分支
git tag 0.0.1 upm//打标记
git push origin upm --tags//向远程upm分支推送
- 上传npm服务器(确保有node.js环境以及npm可用),启动命令行
(确保npm服务器地址是https://registry.npmjs.org不是淘宝镜像)
启动命令行cmd
npm login//登录
//账号
//密码
//邮箱
//邮箱验证
cd 到插件包里,即package.json所在文件夹
npm publish//提交到npm服务器
unity项目配置npm地址
1.打开project setting
2.打开package manager
3.新增地址即可