Amazonで商品を見るセール会場へ

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

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

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

Unityのおすすめ書籍

開発PCの選び方

周辺機器の優先度

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