Amazon10/19まで!プライム感謝祭開催中!セール会場へ

Unity│パッケージのインポートで更新されるもの

Gitなどのバージョン管理システムを使えない環境において、Unity Package(.unitypackage)のエクスポート・インポートでアセットをやり取りする場合、既存プロジェクトの何が更新され、何が更新されないのかを検証しました。

目次

検証用データの準備

Unityプロジェクトを新規作成し、以下の3種類のパッケージを作成しました。

Pack01:初期状態

「A」「B」「C」というフォルダを作成し、それぞれに「A」「B」「C」の画像ファイルを配置してパッケージをエクスポートしました。

Pack01の構成

Pack02:階層を変更

「Common」フォルダを新規作成してABCの画像ファイルを移動し、元のフォルダを削除した状態でエクスポートしました。

Pack02の構成

Pack03:画像と設定を更新

ABCの画像の色を変更し、インスペクターの設定(Packing TagをTESTに変更)も変更した状態でエクスポートしました。

Pack03の構成

インポートの検証結果

Pack01をインポート

インポート画面で緑色の「New」バッジが表示され、新規アセットとして正常にインポートされました。

Pack01のインポート

Pack02をインポート

「all assets from this package are already in your project」とダイアログに表示され、更新対象が存在しないと判定されてインポートできませんでした。

Pack02のインポート失敗

Pack03をインポート

更新アイコンが表示され、画像データおよびインポート設定の上書きに成功しました。

ただし、プロジェクト内のフォルダ階層はPack01の配置のまま維持されます。

Pack03のインポート成功

Unityのほかの記事は、まとめからご覧いただけます。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。

環境設定の記事は、ほかにもあります。

検証結果まとめ

  • アセットファイル本体およびインポート設定は上書き更新される
  • フォルダ階層は変更されない(metaファイルのGUIDで同一アセットと判定されるため)
  • ファイル名も変更されない(ファイル名を変更していてもGUIDが一致していれば中身だけが更新される)

参考:https://docs.unity3d.com/jp/530/Manual/AssetPackages.html

階層や命名を変更したい場合

パッケージのインポートではなく、AssetDatabase APIを用いたスクリプトを実行することで、プロジェクト内のアセット階層やファイル名を変更できます。

using UnityEngine;
using UnityEditor;
public class MoveAssets : MonoBehaviour
{
[MenuItem("Sample/MoveAssetsToDirectory")]
private static void Example()
{
AssetDatabase.MoveAsset("Assets/A/Sample.png", "Assets/B/Sample.png");
}
}

参考:https://docs.unity3d.com/jp/current/Manual/AssetDatabase.html

よくある質問:パッケージのインポートで更新されるもの

この記事では、何を検証していますか?

Gitなどのバージョン管理システムを使えない環境で、Unity Package(.unitypackage)のエクスポート・インポートでアセットをやり取りする場合に、既存プロジェクトの何が更新され、何が更新されないのかを検証しています。

どんなパッケージで検証しましたか?

Unityプロジェクトを新規作成し、3種類のパッケージを作成しています。Pack01は初期状態(「A」「B」「C」のフォルダにA・B・Cの画像を配置)、Pack02は階層を変更(「Common」フォルダを作成して画像を移動し、元のフォルダを削除)、Pack03は画像と設定を更新(画像の色とPacking Tagの設定を変更)した状態です。

Pack01をインポートすると、どうなりますか?

インポート画面で緑色の「New」バッジが表示され、新規アセットとして正常にインポートされました。

階層を変更したパッケージ(Pack02)は、インポートできますか?

記事の検証では、「all assets from this package are already in your project」とダイアログに表示され、更新対象が存在しないと判定されてインポートできませんでした。

画像や設定を更新したパッケージ(Pack03)は、どうなりますか?

更新アイコンが表示され、画像データおよびインポート設定の上書きに成功しました。ただし、プロジェクト内のフォルダ階層は、Pack01の配置のまま維持されます。

インポートで、更新されるもの・されないものは何ですか?

記事のまとめでは、アセットファイル本体およびインポート設定は上書き更新され、フォルダ階層は変更されません。metaファイルのGUIDで同一アセットと判定されるため、ファイル名を変更していても、GUIDが一致していれば中身だけが更新されます。

階層やファイル名を変更したいときは、どうすればよいですか?

パッケージのインポートではなく、AssetDatabase APIを用いたスクリプトを実行することで、プロジェクト内のアセット階層やファイル名を変更できます。詳しい内容は、記事内の参考リンク(Unity公式マニュアル)を参照してください。

この検証は、どのUnityのバージョンで行われていますか?

記事には、検証したUnityのバージョンの記載がありません。バージョンによって動作が異なる場合があるため、お使いの環境では、少数のアセットで試してから使い、最新の仕様は、Unityの公式マニュアルで確認してください。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

Unityのおすすめ書籍

開発PCの選び方

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次