Skip to content

【開発者向け】自作物をVPM・VCC対応する方法

手順(Unity作業編)

  1. ツールのフォルダをAssets配下ではなくPackages配下に置く

  2. フォルダ名を適宜変更する(エラーが出ない限りは何でもいいですがcom.unity.burstのようなネーミングがされることが多いので私もそれに合わせてcom.example.toolとしています)

  3. ツールのルートフォルダ直下にpackage.jsonを作成

必要最低限の例

json
{
  "name": "com.example.tool",
  "version": "1.0.0",
}

色々書いてみた例

json
{
  "name": "com.example.tool",
  "displayName": "Example Tool",
  "version": "1.0.0",
  "author": {
    "name": "Example",
    "email": "contact@example.com"
  },
  "unity" : "2022.3",
  "description" : "Package for explanation.",
  "vpmDependencies" : {
    "com.vrchat.avatars" : "3.7.0"
  },
  "url" : "https://packages.example.com/com.example.tool-1.0.0.zip?",
  "legacyFolders" : {
    "Assets\\ExampleTool" : "5f241139b9f5c4fcf5076516cb09aecc"
  }
}

表は重要そうなところの抜粋です。公式の情報は以下から。

プロパティ説明
name(必須)パッケージ名。com.example.toolのようなフォーマットで設定。
version(必須)ツールのバージョン番号。0.0.0のようなフォーマット(semver)で指定。semverにはバージョン番号の上げ方に制約があり、x.y.zのうち他のツールのコードに変更が必要なような破壊的な変更があればxを、単なる機能追加であればyを、不具合修正のみであればzの数値を上げるように決められている。
displayName(必須?)ツールの表示上の名前。現状なくても動くが、あるとVCCやALCOMでこの名前が表示されてわかりやすいのであったほうが良い。
url(必須?)ツールの制作者に関する情報。なくても動くが必須扱いにはされている。後述するreposには必要。urlの末尾の?は現在は不要だが、かつてはこれがないとvpmのバグでエラーになっていた。
author(必須?)ツールの制作者に関する情報。なくても動くが必須扱いにはされている。
descriptionツールの説明文。
vpmDependencies他のvpmパッケージに依存している場合に指定。これが指定されていればツールをインストールする際に前提パッケージも一緒に入れてくれる。
dependencies他の非vpmパッケージに依存している場合に指定。
legacyFoldersパッケージをインストールする際に消すファイル・フォルダ。Assetsに旧バージョンがあると重複してエラーになるのであとからVPMに移行する際はあったほうが良い。
  1. スクリプト(.cs)のルートフォルダにasmdef(Assembly Definition)を作成

  2. asmdefの設定を適宜変更

名前説明
Nameasmdefの名前。名前は何でも良いがcom.example.toolのようにパッケージ名に合わせられることが多い。EditorとRuntimeでスクリプトが分かれている場合、それぞれにasmdefを作成し、com.example.tool.Editorのように別の名前を指定。
Auto Referencedオフを強く推奨。オフにすると他アセンブリから参照する際に明示的な指定が必要になるがコンパイルが早くなる。
Assembly Definition References参照する他アセンブリ。上にUse GUIDsは謎のコンパイルエラーの原因になるのでオフを強く推奨
Platforms基本はそのままで良い。Editorスクリプトの場合はAny Platformsのチェックを外し、Editorだけチェックを入れる。
Version Defines該当パッケージがインストールされている場合にシンボルを定義。パッケージのインストール状況に応じてコードを変えられる。
  1. この時点でスクリプト関係のエラーが出ている場合は適宜Assembly Definition Referencesに不足している参照を追加

  2. おしまい!

手順(リポジトリ編)

vpm.jsonを作成して公開するだけです。jsonは手書きでもツールで生成してもGitHub Actionsで自動化しても良いです。一度リポジトリに登録したパッケージを削除すると破壊が発生するため、削除しないようにしてください。

Repos | VRChat Creator Companion

必要最低限の例

{
  "id": "com.example.vpm",
  "url": "https://vpm.example.com/vpm.json",
  "packages": {
    "com.example.tool": {
      "versions": {
        "1.0.0": {
          "name": "com.example.tool",
          "version": "1.0.0",
          "url" : "https://packages.example.com/com.example.tool-1.0.0.zip?"
        }
      }
    }
  }
}

私が運用している実際の例

Released under the CC BY 4.0.