Unity は、パッケージマニフェストファイル (package.json) を使用して、特定のパッケージの特定のバージョンに関する情報を管理します。パッケージマニフェストは常にパッケージのルートにあり、登録名やバージョン番号など、パッケージに関する重要な情報が含まれています。
パッケージマニフェストは、ユーザーと通信するために以下のような有用な情報も定義します。
パッケージマニフェストは JSON (JavaScript Object Notation) 構文を使用してパッケージに含まれる内容を記述します。ファイルの形式は npm の package.json 形式と類似していますが、一部のプロパティには異なるセマンティクスが使用されます。サンプルパッケージマニフェストファイルの例を参照してください。
Package Manager はこのマニフェストを読み取り、パッケージのコンテンツ、コンテンツの解凍方法、Package Manager ウィンドウに表示する情報を見つけます。マニフェストはこの情報を一連の必須、推奨、任意の各プロパティに格納します。
これらのプロパティが存在しない場合は、公開されたときにレジストリがパッケージを拒否するか、Package Manager がパッケージを取得またはロードすることができません。
| プロパティ | JSON 型 | 説明 |
|---|---|---|
| name | 文字列 | 逆ドメイン名表記を使用する Unity Package Manager の命名規則に準拠している一意の識別子。命名規則の詳細については、パッケージの命名を参照してください。 ノート: name ID は、Package Manager ウィンドウのリストパネルに表示されるユーザーに分かりやすい表示名とは異なります。 |
| version | 文字列 | パッケージのバージョン番号。形式 "major.minor.patch" を使用します。例えば、 "3.2.1" は 3 番目のメジャーリリースの 2 番目のマイナーリリースで最初のパッチであることを示しています。この値はセマンティックバージョニングに従う必要があります。詳細については、バージョン管理を参照してください。 |
Package Manager は、推奨プロパティが見つからない場合や無効な値である場合でも、プロジェクトにパッケージをインストールできます。
ただし、推奨されるベストプラクティスは、これらのプロパティに値を割り当てて、パッケージを検出可能にし、ユーザーに対してより良好な操作性を実現することです。
| プロパティ | JSON 型 | 説明 |
|---|---|---|
| description | 文字列 | パッケージの簡単な説明。これは、Package Manager ウィンドウの Details パネルに表示されるテキストです。このフィールドは UTF–8 文字コードをサポートします。つまり、改行 (\n) や箇条書き (\u25AA) などの特殊な形式の文字コードを使用できます。 |
| displayName | 文字列 | Unity エディター (Project ウィンドウ、Package Manager ウィンドウなど) に表示されるユーザーに分かりやすい名前。displayName 値の例としては、Unity Timeline、ProBuilder、In App Purchasing があります。 |
| unity | 文字列 | パッケージが互換性を持つ Unity の最小バージョンを示します。指定を省略すると、Package Manager はすべての Unity バージョンと互換性のあるパッケージとみなします。 想定される形式は "major.minor" です (例: "2018.3")。Unity 6 以降のバージョンは、同じ "####.#" 形式に従います。例えば、Unity 6 の技術バージョン番号は "6000.0" です。特定のパッチを指定するには、任意のプロパティで説明されている unityRelease プロパティも指定します。ノート: Unity と互換性のないパッケージは、Package Manager ウィンドウに表示されません。 |
これらのプロパティは任意であり、省略することができます。ただし、設定する場合は、有効な値であることが必要です。
| プロパティ | JSON 型 | 説明 |
|---|---|---|
| author | オブジェクトまたは文字列 | パッケージの作成者。このプロパティは 1 人の作成者のみをサポートします。 このプロパティには、1 つの必須フィールド name と 2 つの任意フィールド email と url があります。 これらのフィールドは、JSON オブジェクトとして指定できます。または、キーを作成者とする 1 つの文字列に折りたたむこともできます。 オブジェクトの例: {"name" : "John Doe","email" : "john.doe@example.com","url" : "http://john.doe.example.com/"}文字列の例: "John Doe <john.doe@example.com> (http://john.doe.example.com/)"
|
| changelogUrl | 文字列 | URL として指定したこのパッケージの変更ログのカスタムの保存場所。 |
例: "changelogUrl": "https://example.com/changelog.html"ノート: Package Manager が URL の場所に到達できない場合 (例えば、ネットワークに問題がある場合)、以下の処理を実行します。 - パッケージがインストールされている場合、Package Manager はファイルブラウザーを開き、パッケージキャッシュ内の CHANGELOG.md ファイルを表示します。- パッケージがインストールされていない場合、Package Manager はオフラインの変更ログが利用できないという警告を表示します。 |
||
| dependencies | オブジェクト | パッケージの依存関係のマップ。キーはパッケージ名であり、値は特定のバージョンです。それらは、このパッケージが依存する他のパッケージを識別します。 ノート: Package Manager は範囲構文をサポートせず、SemVer バージョンのみをサポートします。 |
| documentationUrl | 文字列 | URL で指定したこのパッケージのドキュメントのカスタム保存場所。 |
例: "documentationUrl": "https://example.com/"ノート: Package Manager が URL の場所に到達できない場合 (例えば、ネットワークに問題がある場合)、以下の処理を実行します。 - パッケージがインストールされている場合、Package Manager はファイルブラウザーを開き、パッケージキャッシュ内の Documentation~ フォルダーを表示します。- パッケージがインストールされていない場合、Package Manager はオフラインドキュメントが利用できないという警告を表示します。 |
||
| hideInEditor | ブーリアン | デフォルトでは、Inspector ウィンドウでオブジェクトピッカーを使用すると、Project ウィンドウでパッケージのアセットが非表示になり、結果から除外されます。このプロパティを "false" に設定すると、このパッケージのアセットが常に表示されるようになります。 |
| keywords | 文字列の配列 | Package Manager の検索 API によって使用されるキーワードの配列。これは、ユーザーが関連するパッケージを見つけるのに役立ちます。 |
| license | 文字列 |
SPDX 識別子形式を使用した OSS ライセンスの識別子、または “Refer to LICENSE.md file” のような文字列。 ノート: パッケージマニフェストでこのプロパティを省略すると、パッケージには LICENSE.md ファイルを配置する必要があります。 |
| licensesUrl | 文字列 | URL で指定したこのパッケージのライセンス情報のカスタム保存場所。 |
例: "licensesUrl": "https://example.com/licensing.html"ノート: Package Manager が URL の場所に到達できない場合 (例えばネットワークの問題がある場合) は、以下の処理を行います。 - パッケージがインストールされている場合は、ファイルブラウザーを開き、パッケージキャッシュ内の LICENSE.md ファイルを表示します。- パッケージがインストールされていない場合、Package Manager はオフラインライセンス情報が利用できないという警告を表示します。 |
||
| samples | オブジェクトの配列 | パッケージに含まれるサンプルのリスト。各サンプルには、表示名、説明、および Samples~ フォルダーから始まるサンプルフォルダーへのパスがあります。{"displayName": "<name-to-appear-in-the-UI>","description": "<brief-description>","path": "Samples~/<sample-subfolder>"}詳細については、パッケージのサンプル作成を参照してください。 |
| type | 文字列 | 内部使用のために予約済み。 |
| unityRelease | 文字列 | パッケージに互換性のある特定の Unity のリリースを示す Unity バージョンの一部。このプロパティは、更新されたパッケージが Unity のアルファ/ベータの開発サイクルで行われた変更を必要とする場合に使用できます。これには、パッケージが新たに導入された API を必要とする場合や、API アップデーターのルールを適用せず、後方互換性のない方法で変更された既存の API を使用する場合が考えられます。 想定される形式は "<update><release> です (例: "0b4")。 ノート: 推奨される Unity プロパティを省略した場合、このプロパティには効果がありません。 Unity と互換性のないパッケージは、Package Manager ウィンドウに表示されません。 |
{
"name": "com.[company-name].[package-name]",
"version": "1.2.3",
"displayName": "Package Example",
"description": "This is an example package",
"unity": "2019.1",
"unityRelease": "0b5",
"documentationUrl": "https://example.com/",
"changelogUrl": "https://example.com/changelog.html",
"licensesUrl": "https://example.com/licensing.html",
"dependencies": {
"com.[company-name].some-package": "1.0.0",
"com.[company-name].other-package": "2.0.0"
},
"keywords": [
"keyword1",
"keyword2",
"keyword3"
],
"author": {
"name": "Unity",
"email": "unity@example.com",
"url": "https://www.unity3d.com"
}
}