unity 回车_Unity 自定义PackageManager服务器

854957c7f33ff8bb185f277bc42c1cf9.png

本文会实现以下几个需求

  • 搭建自己的PackageManager服务器
    • 安装nodejs
    • 安装npm
    • 部署verdaccio
  • 将自己写的插件发布到PackageManager服务器上
    • 配置自己的Package
    • 注册 Verdaccio 服务器账号
    • 登陆 Verdaccio 服务器
    • 发布 Package 到 Verdaccio 服务器上
  • 让项目可以使用Verdaccio服务器上的所有Package
    • 修改项目的manifest.json
  • 修改Unity编辑器的项目模板,让每个新建的Unity项目都可安装自己服务器上的插件
    • 修改Unity编辑器项目模板的mainfest.json
    • 使用peazip重新压缩为.tgz文件

本文需要用到的工具

  • Unity Editor
  • 云服务器
  • Windows PowerShell
  • PeaZip

参考文章:

https://medium.com/@markushofer/run-your-own-unity-package-server-b4fe9995704e​medium.com

一、云服务器部署

购买服务器

你可以选择阿里云,腾讯云,谷歌云等产品,本文使用腾讯云的轻量级服务器。

理论上只要是Linux的系统就可以。

c1ea7bae26227718801d958bb564fc9d.png

系统镜像为Ubuntu

39a2e2943899227bf5fc854a16d9607a.png

6257d82cec67b552895757ed9ef6178d.png

登陆云服务器

自行购买好服务器之后进入控制台界面,大部分厂商的服务器都是可以直接在网页上远程登陆的。点击登陆

ec632c0b37bff00810d4a70d9b0a8244.png

切换到root

进入控制台之后输入 sudo -i 获取root权限

4d6a634454223a47208a35cb3c760e00.png

安装Verdaccio

Verdaccio是一个开源的npm私服,我们后续的package都是发布在这上面的

https://verdaccio.org/zh-CN/​verdaccio.org

fea8b8c268fd105516f1794a2dc6471f.png

在安装verdaccio之前需要先安装nodejs和npm

使用以下代码安装

curl -sL https://deb.nodesource.com/setup_11.x | bash -
apt-get install -y nodejs

成功之后的输出

a2736432b1d2852080594f3bfb35735d.png

使用以下代码验证是否安装成功

nodejs -v
npm -v

正常输出了版本号则说明安装成功

5ca5a8deeb00eced00c598192e1a9db9.png

确保nodejs和npm安装成功之后我们来安装verdaccio

npm install --global verdaccio

安装成功

56743d31db03366f5aea3e46fd59f75e.png

配置Verdaccio

然后我们需要运行verdaccio,在普通用户权限下运行即可

按Ctrl D退出root权限

输入verdaccio运行

verdaccio

成功运行显示下图,记住config file的路径,下一步需要用到

我这里是 /home/lighthouse/verdaccio/config.yaml

ef374a2494d1702a92841bb1d00f7418.png

按Ctrl Z退出verdaccio

9af3291f15957390fcf121a3f8e49570.png

这里使用vim + 上面记住的路径,编辑配置文件

vim /home/lighthouse/verdaccio/config.yaml

b92f413c1bfd33ea23691bdebf22cb83.png

到这个界面之后按 i ,然后在plugins下插入下面两行代码

4873是端口,可以自行定义,之后就使用ip+这个端口访问verdaccio界面

c4541c2c2267a91b08b041e0edae85d6.png

按Esc退出Insert

输入 :wq 并回车保存并退出vim

ae4496cf0b1afbdf7c02bb6ac54bac2f.png

0c5644a9873435434047fbf02a36ddec.png

这时候需要回到控制台,打开防火墙,添加你刚才设置的端口

91cf6f7225ab142e67e81049f0cb845a.png

a41043c5925f51021a560b81693ac8b0.png

重新登陆到控制台,运行verdaccio

77aaa9d120df97aab638073aaf8ab726.png

这时候你就可以打开浏览器,输入ip加端口访问 verdaccio 了

a736e7d9d11106a1ef2553642bc21937.png

控制台这边也会有log输出

d57545990e820303fbb45831170b9718.png

但是这样还有一个弊端,我们需要verdaccio一直运行,但是现在关掉控制台之后,它也会跟着关闭,我们也无法通过端口访问了

dad5721c1c853831fdcfad9910d0a442.png

我们需要使用一个叫screen的小工具来让verdaccio一直运行在服务器上

登陆服务器输入 screen,

bbdac477901d8cbbc08f85413ea14710.png

如果没有安装,则输入以下代码进行安装

sudo apt-get install screen

输入之后会显示该界面,再按一下回车

b12a02472465539de1b4abb802e0cc66.png

然后就进入到了screen的控制台,输入verdaccio回车

05f7e348a399fe9c9c5bf65ee41ed8aa.png

按 Ctrl A+D退出

大功告成,现在关闭控制台之后,你还可以通过端口访问

b0bd1f22bac33f166dc00e73fc30c727.png

二、将自己的插件发布到服务器上面

首先你需要准备好你的插件包

你可以参考Package下面这些Unity自带的包格式

9cf2b82dd2056dd63fc7a51a0fe295f2.png

这里用我自己写的UI框架举例

85a23d7e7b86be7aaba4ecc317a760e7.png

有几个要点:

  • package以文件夹的形式管理
  • 脚本建议按照Editor和Runtime进行分类
  • package里所有的脚本都需要有一个程序集定义文件Assembly Definition
  • 程序集之间的引用关系必须正确
  • 根目录必须要有一个package.json文件

为脚本创建程序集定义文件

我这个项目是比较简单的结构,就只需要给Editor和Runtime两个文件夹的脚本添加

关于程序集定义文件的详细介绍请看官方手册:

https://docs.unity3d.com/Manual/ScriptCompilationAssemblyDefinitionFiles.html​docs.unity3d.com

在文件夹下右键创建一个Assembly Definition文件,这个文件会自动将跟它同级以及同级文件夹内的脚本定义为一个程序集

这里我在Runtime文件夹下新建

651dfcd56b8ce5b4b3a2792720cc0e46.png

d71aaae1836f386158d99a6f63f951d4.png

然后我在Editor文件夹下新建

这里主要注意平台和引用

  1. 因为Editor的脚本应该是只在编辑器下生效的,所以我们需要将平台改为只勾选Editor,否则有可能在打包时出错

dc0383eeccb6550bf9deb2b75a67cb34.png

2. 一些Editor的脚本会引用Runtime的脚本,所以需要对Editor的程序集定义文件引用Runtime的程序集定义文件

21fa7f9476cee3425f8d25b01812e6c4.png

3. 如果你的插件引用了其他插件,也需要添加其他插件的程序集引用

在插件根目录创建 package.json 文件

b8fa87f0d39adfe48002c9184cd7c7de.png

打开之后,填写包名,版本号,引用的其他package等

49f74dea86eed7b904585fb01da2b561.png

全部完成之后,我们的Package就准备好了,剩下就只有上传了

使用Windows PowerShell将Package上传到 verdaccio

打开PowerShell ,一般都是自带的

c6cc2cd88f77d914d15812775230031d.png

首先使用以下指令注册一个verdaccio账户

npm adduser --registry http://ip:端口

会让你输入用户名密码和邮箱

89b9abdee7d69b93bc90ab17b3885038.png

注册成功

6002dd4d837357cdced2b887b6382858.png

使用以下代码登陆,注册登陆一般只需一次即可,后续直接发布就行

npm login --registry http://ip:端口

接下来cd到你的package路径

ea285f3aea88144e68d14b707e74a954.png

然后使用以下指令发布,每次更新都需要提升版本号,否则会失败

npm publish --registry http://ip:端口

发布成功

1900fc1b921e2cff52fe7fca04365cc8.png

然后可以在网页看到你发布的Package

152c6d7c64b7b7dc558856c183bd5338.png

三、修改项目的manifest.json文件,注册你的服务器地址

打开根目录,找到Packages文件夹下的manifest.json

96cde8a697ec1f9b842fc15c14784ed7.png

bf2136d20ea44c812527c1cf460e7444.png

在dependencies上方加入以下代码

  "scopedRegistries": [
    {
      "name": "Puffer",
      "url": "http://ip:端口/",
      "scopes": [
        "注册的包名前缀",
      ]
    }
  ],

如下图

c8a0eaefa24348c1ba4fdee770616cc6.png

重新回到项目,打开PackageManager,就可以找到我们发布的package了

新版本的Unity还可以在这筛选是Unity的包还是自定义服务器的包

为了方便找到我自己的包,名字前都加了一个下划线

88988795a25933dd2237636df34823b5.png

四、修改Unity编辑器的项目模板,让每个新建的Unity项目都可安装自己服务器上的插件

上面这样依然不是很方便,我每新建一个项目,都要重新修改一下manifest.json文件,对于我这样的程序员来说,一件事情做两遍,是不能忍的。

我们通过修改Unity编辑器的项目模板来解决这个问题,这样每次新建项目的时候,就都会使用我们模板里的json文件了!

首先找到Unity编辑器的项目模板路径

如下

23f5ae93c9770d5b7132da9e67ec994a.png

将我们平时常用的那个模板解压,进入解压后得到的文件夹

415206d31cb348857887819a9d6b230d.png

打开它,增加我们域注册代码

6b58cf3103120b6ea167b19bfb27dea7.png

为这个模板重命名,到模板根目录,打开package.json

1de1978ba502cb119cad2b580374295b.png

修改name和displayName

0e81f87d52354beca3a1e6a2ddf7962f.png

这时候我需要将这个package文件夹重新压缩回tgz,我常用的winrar是不行的

这里我使用PeaZip来进行压缩

8ee4ee688a338d138fe3258d5ffe09fe.png

右键该文件夹,添加到归档

5e1e7c550ab8becf044159a1d09be927.png

注意红框内的几个设置

选择GZip,勾选选用TAR归档,点击确定

dbe9f6ef74052d3b651cd7f94c872f41.png

然后得到一个 .tar.gz 文件

c7800819a2189d4bff8dd04f4f6a65d9.png

对其进行重命名,将 .tar.gz 改成 .tgz ,否则Unity无法识别该模板

ccc62d5d78ed3dbe71d2be894c2d4614.png

最后删除Package文件夹

edb7dcda4a76b34b78ff881c6f63f22c.png

然后需要注销或者重启电脑,才会生效

4a56d41cd3c332efc7297a3a21601f31.png

大功告成,新建项目的时候就可以看到我们的模板了

47c78bcccf67b2d216ee03311e2beec5.png

有错误请在评论中指出

顺便知乎的文本编辑器真的 LAJI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值