unity3d package 管理

    unity2018之后使用了全新的package 管理工具。下图是全新package和以前的package的不同点(摘自https://blogs.unity3d.com/2018/05/09/unity-packages-life-cycle/)。

  Asset Store Package New Package
File .unitypackage Git repo or .tgz
Location Imported to Asset Folder Referenced (or embedded) via Packages folder
Dependencies Manual Explicit and calculable
Removal Manual / Difficult Remove Reference or delete embedded directory
Updatable Error prone / Difficult Easy
Forkable Manual Easy, source available (when feasible)
Full Projects Difficult to install Templates from New Project dialog

   接下来介绍一下新版package中如何去管理自己的一些package。

Packages里面都可以包含些什么呢?

  • C# 脚本
  • Assemblies(dll)
  • Native plugins(so,jar,aar...)
  • 模型、贴图、动画文件...

    每个包里面需要包含package manifest文件,这个文件里面包含了package的基本信息。下面是一个样例:

{
  "name": "com.unity.example",
  "version": "1.2.3",
  "displayName": "Package Example",
  "description": "This is an example package",
  "unity": "2019.1",
  "unityRelease": "0b5",
  "dependencies": {
    "com.unity.some-package": "1.0.0",
    "com.unity.other-package": "2.0.0"
 },
 "keywords": [
    "keyword1",
    "keyword2",
    "keyword3"
  ],
  "author": {
    "name": "Unity",
    "email": "[email protected]",
    "url": "https://www.unity3d.com"
  } 
}

    而每个包里面的目录结构也是固定的:

<root>
  ├── package.json
  ├── README.md
  ├── CHANGELOG.md
  ├── LICENSE.md
  ├── Editor
  │   ├── Unity.[YourPackageName].Editor.asmdef
  │   └── EditorExample.cs
  ├── Runtime
  │   ├── Unity.[YourPackageName].asmdef
  │   └── RuntimeExample.cs
  ├── Tests
  │   ├── Editor
  │   │   ├── Unity.[YourPackageName].Editor.Tests.asmdef
  │   │   └── EditorExampleTest.cs
  │   └── Runtime
  │        ├── Unity.[YourPackageName].Tests.asmdef
  │        └── RuntimeExampleTest.cs
  └── Documentation~
       └── [YourPackageName].md

package如何被使用

    我们引用自定义的package有两种方式,一种是嵌入式的,一种是local的。

嵌入式

    所谓嵌入式的就是直接将package放入到工程目录中的packages目录。

local

      我们重点说一个local package。unity工程目录中packages目录里面有一个manifest.json文件,这个文件是用来管理package依赖的有点像maven或者是npm。具体的格式请参见https://docs.unity3d.com/Manual/upm-manifestPrj.html

{
  "scopedRegistries": [
    {
      "name": "Main",
      "url": "http://localhost:8081/repository/unity/",
      "scopes": [
        "com.xxx.unity"
      ]
    }
  ],
  "dependencies": {
    "com.unity.ads": "2.3.1",
    "com.xxx.unity.tools": "1.0.0"
  }
}

      里面的scopedRegistries是用来注册我们自己的package的,unity自己有一个官方的registry。上面的例子中我是使用的npm管理工具去管理的自己的package(后面我再详细介绍npm包管理工具)。通过上面的步骤我们就可以管理和下载自己的package啦。

   总结一下:

  1. 创建unity package。我们只要按照上面说的目录结构创建自己的目录就可以的,需要注意的就是如果里面包含了c#代码,我们一定要使用unity中的asmdef去管理我们的代码,否则代码是不被编译的。
  2. 上传到npm
  3. 配置manifest文件

猜你喜欢

转载自blog.csdn.net/scdnshijiemengxiang/article/details/101017077