Unity PackageManager 和 npm 自定义

本文就不在赘述菜单面板和那些官方资源了,直接从如何通过修改配置文件,自定义本地包和远程包两方面介绍流程。提及一些官方文档暂未公布的功能,及实际使用时注意的地方。

一、引用本地包
步骤
创建一个空项目,启动。
Project面板默认已经包含着这些包。


\Packages\manifest.json 中有更多。


在Assets中新建一个我们自己的包,如 com.setsuodu.mynpm。
再添加一个脚本文件,NPM.cs。

namespace SetsuOdu
{
    public static class NPM
    {
        public const string myblog = "https://blog.csdn.net/mseol";
    }
}
1
2
3
4
5
6
7
添加一个 package.json 备用。

{
  "name": "com.setsuodu.mynpm",
  "version": "0.1.0",
  "description": "a test npm package",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "setsuodu",
  "license": "MIT",
  "keywords": [
    "unity3d",
    "unity3d-npm"
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
让以上创建的文件在unity中自动编译一下,生成 .meta 文件。完成后把整个包剪切到项目根目录。如图:

编辑 \Packages\manifest.json ,修改后如下:
{
  "dependencies": {
    "com.unity.ads": "2.0.8",
    "com.setsuodu.mynpm": "file:../com.setsuodu.mynpm"
  }
}
1
2
3
4
5
6
切换回unity,经过一个读条,包已引入。

二、引用远程包
完成上一步以后,可以理解包的引用是在 dependencies{} 中按照 "包名": "路径" 的格式设置的。那么可以把路径 file:/ 改成 http:// ,引用自己上传到网络上的资源吗?

答案是肯定的,但是有所限制。对 manifest.json 做以下修改。

{
  "dependencies": {
    "com.unity.ads": "2.0.8",
    "com.setsuodu.mynpm": "0.1.0"
  },
  "registry": "http://"
}
1
2
3
4
5
6
7
目前已知支持对这些地址的引用。
https://packages.unity.com(不填时默认)
http://localhost
https://www.npmjs.com

步骤
安装nodejs(已安装则跳过)
安装verdaccio
$ npm install -g verdaccio
1
完成后找到目录 C:\Users\Administrator\AppData\Roaming\verdaccio\storage ,把自己的包放到该目录下。

注册npm账号,登录
$ npm login
> Logged in as setsuodu on http://localhost:4873/.
1
2
启动verdaccio
$ verdaccio
> warn ...
> ... http://localhost:4873/ - verdaccio/3.8.2
1
2
3
发布自己的包
// cd到包目录
$ cd C:\Users\Administrator\AppData\Roaming\verdaccio\storage\com.setsuodu.mynpm
$ npm publish
1
2
3
发布成功后到官网账户下,查看 Packages。如图,已经可以使用 $ npm i com.setsuodu.mynpm 远程下载自己的包了。


在unity中引用外网的包。再次编辑 \Packages\manifest.json ,修改后如下:
{
  "dependencies": {
    "com.unity.ads": "2.0.8",
    "com.setsuodu.mynpm": "0.1.3"
  },
  "registry": "https://registry.npmjs.org"
}
1
2
3
4
5
6
7
切换回Unity,经过短暂下载和编译,就可以使用了。

using UnityEngine;
using SetsuOdu;

public class HowToUse : MonoBehaviour
{
    void Start()
    {
        Debug.Log(NPM.myblog);
    }
}
1
2
3
4
5
6
7
8
9
10
调用com.setsuodu.mynpm包中的方法,打印成功。


参考文献
NodeJS学习:搭建私有NPM
Unity Package Manager Overview
How to make a custom package

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值