Version: 2021.1
言語: 日本語
バージョン管理
Perforce のインテグレーション

バージョン管理のインテグレーション

Unity には PerforcePlastic SCM の 2 つのバージョン管理システムが統合されています。Unity でバージョン管理インテグレーションを使用するには、Unity プロジェクトに Perforce または Plastic SCM サーバーを設定する必要があります。

Unity のバージョン管理の設定

Unity プロジェクトを開き、Edit > Project Settings に移動し、Editor カテゴリを選択します。

Unity エディターのバージョン管理設定
Unity エディターのバージョン管理設定

Version Control には以下の設定があります。

プロパティ 機能
Mode バージョン管理モードを選択します。
Hidden Meta Files オペレーティングシステムのファイルエクスプローラーで .meta ファイルを非表示にします。Unity はどのモードを選択しても、Project ウィンドウに .meta ファイルを表示しません。
Visible Meta Files Unity がサポートしないバージョン管理システムを使用する場合には、このオプションを選択します。これは、デフォルトの設定です。次に、選択したバージョン管理システムを使用して、ソースアセットとそれらのアセットのメタデータを管理できます。詳しくは、外部のバージョン管理システム を参照してください。
Perforce バージョン管理システムとして Perforce を使用する場合は、このオプションを選択します。
Plastic SCM バージョン管理システムとして Plastic SCM を使用する場合は、このオプションを選択します。
Username
(Perforce のみ)
Perforce アカウントに関連付けられたユーザー名を入力します。
Password
(Perforce のみ)
Perforce アカウントに関連付けられたパスワードを入力します。
Workspace
(Perforce のみ)
ワークスペースを入力します (例えば Example_Workspace_1)。
Server
(Perforce のみ)
Unity プロジェクトがあるサーバーを入力します (例えば localhost: 1666)。
Host
(Perforce のみ)
コンピューターで使用するホスト名を入力します (例えば workstation123.perforce.com)。
Log Level Unity のコンソールログで受け取るバージョン管理情報の量を選択します。
Verbose Unity はバージョン管理に関連するすべての操作をログに記録します。このオプションは非常に詳細なログを提供し、バージョン管理の設定をデバッグたい場合に便利です。
Info Unity はエラー、警告、 バージョン管理に関する情報をログに記録します。
Notice Unity はエラーと警告をログに記録します。
Fatal Unity は致命的なエラーのみをコンソールに出力します。
Status バージョン管理システムへの接続状況に関する情報を表示します。接続していない場合は、Connect を選択して、設定したシステムに接続します。
Automatic Add この設定を有効にすると、エディターやディスク上のフォルダーを使用してプロジェクトにファイルを加えるときに、Unity は自動的にファイルをバージョン管理システムに加えます。この設定を無効にすると、手動でバージョン管理システムにファイルを加える必要があります。この設定はデフォルトで有効になっています。
Work Offline
(Perforce のみ)
この設定を有効にすると、オフラインで作業できます。この設定を有効にすると、P4V でオフライン作業を調整するか、P4 の reconcile コマンドを使用して、Perforce サーバーデポをオフラインで行った作業で更新する必要があります。詳細は Perforce をオフラインで使用 を参照してください。
Allow Async Update
(Perforce のみ)
この設定を有効にすると、非同期のバージョン管理ステータスクエリを使用できます。有効にすると、Perforce は Unity エディターを停止せずにファイルのバージョン管理ステータスを更新します。バージョン管理サーバーへの接続の待ち時間が長い場合は、この設定を使用します。

ノート: ステータスクエリのみが非同期です。Unity は、ファイルのステータスを変更したり、ファイルステータスに関する最新の情報を必要とする操作を同期的に実行します。
Show Failed Checkouts
(Perforce のみ)
この設定を有効にすると、Perforce がチェックアウト操作を実行できない場合にダイアログを表示できます。チェックアウト操作ができない問題は、接続が失われた場合や、編集したいアセットを他のユーザーが排他的にチェックアウトした場合に発生することがあります。
Overwrite Failed Checkout Assets
(Perforce のみ)
この設定を有効にすると、Unity はチェックアウトできないアセットを保存します。つまり、Perforce がファイルをチェックアウトできない場合でも、Unity は強制的にファイルに保存します。これはデフォルトで有効になっています。これを無効にすると、Perforce がチェックアウトできない場合にファイルを強制的に保存しません。
Overlay Icons エディターにバージョン管理ステータスアイコンを表示するには、この設定を有効にします。
Smart Merge Smart Merge を使うと、同じラインに変更のあるファイルを簡単にマージできます。これは、複数のユーザーが同時に同じプロジェクトで作業している場合に便利です。
Off Smart Merge を無効にします。
Ask Smart Merge を有効にしますが、 競合が発生した場合はマージの前に通知が送信されます。これがデフォルトの設定です。
Premerge 自動的に Smart Merge を使用します。

バージョン管理 の設定を行い、ステータスエリアの横にある Connect ボタンを選択してバージョン管理システムに接続します。Unity がシステムに 接続 すると、ステータスエリアに Connected (接続中) と表示されます。

リビジョン管理ツールを調整するには、 Preferences を開き、 External Tools セクションを選択します。Revision Control Diff/Merge の新しいツールを選択できます。

Unity でバージョン管理を使用

エディターをバージョン管理システムと連動するように設定すると、バージョン管理クライアントではなく、エディターを使用してバージョン管理操作を実行できます。これを行うには、Project ウィンドウでアセットを右クリックします。

バージョン管理の操作は、使用するバージョン管理によって異なります。以下の表は、各バージョン管理で使用可能なアクションを示しています。

バージョンコントロール操作 説明  Perforce Plastic SCM
Get Latest これにより、マシン上のファイルがバージョン管理システム内のファイルと一致するように更新されます。 不可。最新の変更を取得してファイルを更新するには、バージョン管理ウィンドウ (Window > Asset Management > Version Control) を使用する必要があります。
Submit ファイルの現在の状態をバージョン管理システムに送信します。
Check Out ファイルに変更を加えることが可能になります
Check Out (Other) アセットとその .meta ファイルの両方をチェックアウトするか、アセットのみをチェックアウトするか、.meta ファイルのみをチェックアウトするかを選択します。 なし
Mark Add バージョン管理にファイルを加えます。
Revert 開いているファイルの変更を取り消します。
Revert Unchanged 以前にチェックアウトされていて、まだ変更していないファイルから、チェックアウトステータスを除去します。
Resolve Conflicts 複数のユーザーによって変更されたファイルの競合を解決します。 不可。コンフリクトはバージョン管理 メニューに表示されますが、Plastic SCM GUI で解決する必要があります。
Lock 他のユーザーがファイルに変更を送信できないようにします。 不可。Plastic SCM でファイルをロックまたはロック解除するには、特定の Plastic SCM ロックファイルを外部で編集する必要があります。詳細は、Plastic SCM インテグレーション のページを参照してください。
Unlock ロックを解除し、誰でも変更を送信できるようにします。 不可。Plastic SCM でファイルをロックまたはロック解除するには、特定の Plastic SCM ロックファイルを外部で編集する必要があります。詳細は、Plastic SCM インテグレーション のページを参照してください。
Diff コンピューターのローカルファイルとサーバーのファイルの違いを比較します。アセットファイルのみを比較するか、アセットファイルとその .meta ファイルを比較するかを選択できます。

ファイルのチェックアウト

Perforce などの一部のバージョン管理システムでは、バージョン管理されたファイルはデフォルトで読み取り専用であり、編集する前にチェックアウトする必要があります (Work offline 設定を有効にしている場合を除く)。エディターからバージョン管理されたアセットを操作すると、ファイル編集を有効にする Check Out ボタンがインスペクターに表示されます。さらに、Project Settings (プロジェクト設定) ウィンドウには、特定のプロジェクト設定をチェックアウトするための Checkout (チェックアウト) ボタンがあります。

読み取り専用アセットに別のカスタム編集ツールの一部を無効にするカスタムエディタースクリプトコードがある場合、またはバージョン管理されたファイルに手動で書き込む場合は、AssetDatabase.IsOpenForEditAssetDatabase.MakeEditable API を使用して、ファイルの編集が可能なことを確認し、チェックアウト操作を行います。

バージョン管理のインテグレーションでは、カスタムバージョン管理操作検証ロジックの Provider.PreCheckoutCallbackProvider.PreSubmitCallback の C# コールバックにもアクセス可能です。

Unity は、Save Project 操作を実行するときに、エディターで変更した、または “変更済み” とマークされたアセットをディスクに書き込みます。アセットは必要に応じてバージョン管理でチェックアウトされます。これにより、ファイルに実際の変更が発生しなくても、アセットがチェックアウトされる場合があります。これは、アセットが変更されているかどうかを確認せずに、エディタースクリプトがアセットの EditorUtility.SetDirty を呼び出すときに最も頻繁に発生します。

ノート: Unity がバージョン管理クライアントに変更をコミットできない場合 (例えば、サーバーがダウンしている場合や、ライセンスの問題が発生した場合) は、変更を別の変更セットに保存します。

変更を .scene ファイルに保存すると、Unity はそれを自動的にチェックアウトします。Plastic SCM を使用する場合は、自動的に生成されたライトマップなどのアセットも自動的にチェックアウトされます。

バージョン管理ウィンドウ

バージョン管理ウィンドウを使用して、変更リストのファイルを表示できます。ウィンドウにアクセスするには、 Window > Asset Management > Version Control に移動します。

エディターに格納されたバージョン管理ウィンドウ
エディターに格納されたバージョン管理ウィンドウ

Outgoing タブには、バージョン管理へまだコミットをしていないすべてのローカルの変更が列挙されます。Incoming タブにはバージョン管理から取得する必要があるすべての変更が列挙されます。

このウィンドウ内でアセットや変更リストを右クリックすると、それらを操作できます。ある変更リストから別の変更リストへアセットを移動するには、アセットをドラッグして移動先の変更リストのヘッダーにドロップしてください。

Icon

エディターは、ファイルとアセットのバージョン管理のステータスを視覚化するために以下のアイコンを表示します。

Icon 目的
ファイルがローカルで加えられ、バージョン管理への追加は保留中です。
別のユーザーによってバージョン管理に加えられたファイル。バージョン管理への追加は保留中です。
ファイルはローカルでチェックアウトされています。
ファイルが別のユーザーによってリモートでチェックアウトされています。
このファイルのマージに競合が発生しました。解決する必要があります。
ファイルはローカルで削除され、バージョン管理での削除は保留中です。
ファイルは別のユーザーによって削除され、 バージョン管理での削除は保留中です。
ファイルはまだバージョン管理されていません。Mark Add 操作を使用して、ファイルを手動で加えられます。
ファイルは自身によってロックされており、他のユーザーは変更できません。
ファイルは別のユーザーによってロックされており、変更できません。
別のユーザーがこのファイルの新しいバージョンをチェックインしました。最新バージョンを取得するには、Apply Incoming Changes 操作を使用してください。
サーバーがこのファイルのバージョン管理ステータスを要求しているか、応答を待っています。これは、Perforce のような集中管理されたバージョン管理システムを使用している場合にのみ表示されます。
バージョン管理
Perforce のインテグレーション