この記事は、.unitypackageで素材を受け渡した旧検証の記録です。
検証したUnityの版、元のパッケージ、GUIDの比較記録は確認できていません。
今回インポート実験を再実行していないため、階層や名前がすべての版・条件で変わらないという仕様としては扱いません。
Package ManagerのUPMパッケージ更新とは別の話です。
検証用データの準備
元記事では、新規Unityプロジェクトから以下の3種類を作成しています。
Packing Tagは旧Sprite Packer用の設定例で、現在のSprite Atlas V2へ置き換える設定ではありません。
Pack01:初期状態
「A」「B」「C」というフォルダを作成し、それぞれに「A」「B」「C」の画像ファイルを配置してパッケージをエクスポートしました。

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

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

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

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

Pack03をインポート
更新アイコンが表示され、画像データおよびインポート設定の上書きに成功しました。
この旧記録では、フォルダ階層はPack01の配置のままでした。
受け取り側の状態やGUIDを変えた条件の結果までは示していません。

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

元記事のコードは、GitHubのMOTOKI-LLC/cg-method-codeにも保存されています。
2026年10月25日に確認したGitHubの01.csには、下の本文にある移動元・移動先の確認とエラー処理がありません。
この手順では本文のコードを使ってください。
環境設定の記事は、ほかにもあります。




旧検証から分かる範囲
- この旧記録では、画像本体とインポート設定が更新された
- この旧記録では、画像を移した階層は受け取り側へ反映されなかった
- ファイル名変更だけの比較手順・結果は掲載されていないため、命名の挙動は別に確認する
参考:https://docs.unity3d.com/jp/530/Manual/AssetPackages.html
自分の環境で再確認するときに記録すること
複製したプロジェクトで、同じGUIDか別GUIDか、同名パスがあるかを分けて確認します。
GUIDはアセットを識別するIDで、名前や配置パスと同じものではありません。
Editor版、取り込むパッケージ、選択した項目、取り込み前後のパスとGUIDを記録してください。
Pack01を取り込んだ状態を保存し、階層だけを変えた比較と、画像・設定を変えた比較の出発点にします。
名前変更や削除も調べる場合は、それぞれ条件を分けてください。
元アセットへのScene・Prefabの参照が残るかも確認し、旧記録の結果と比較します。
階層や命名を変更したい場合
受け取り側で意図して移動・改名する場合は、UnityのProjectウィンドウかEditor用AssetDatabase APIを使います。
公式のmeta資料はGUIDとImport設定をmetaに保存し、Projectウィンドウの移動時はmetaも移動すると説明しています。
これはパッケージ取り込み時の全衝突条件を保証する説明ではありません。
下のコードはAssets/Editor/MoveAssets.csに保存し、Assets/Bを先に作成します。
移動元/先は例なのでコピー素材へ合わせて変更し、バックアップ後にSampleメニューから実行します。
GameObjectへのアタッチは不要です。
MoveAssetは成功時に空文字、失敗時にエラー文字列を返すため、戻り値を確認します。
このAPIの説明はUnity 6.3資料で2026年10月25日に確認しました。
今回Unityでのコンパイル・移動は未実施です。
using UnityEditor;
using UnityEngine;
public static class MoveAssets
{
[MenuItem("Sample/MoveAssetsToDirectory")]
private static void Example()
{
const string source = "Assets/A/Sample.png";
const string destination = "Assets/B/Sample.png";
if (AssetDatabase.LoadMainAssetAtPath(source) == null ||
!AssetDatabase.IsValidFolder("Assets/B"))
{
Debug.LogError("移動元または移動先フォルダーを確認してください。");
return;
}
string error = AssetDatabase.ValidateMoveAsset(source, destination);
if (!string.IsNullOrEmpty(error))
{
Debug.LogError(error);
return;
}
error = AssetDatabase.MoveAsset(source, destination);
if (!string.IsNullOrEmpty(error))
Debug.LogError(error);
else
Debug.Log("移動しました: " + destination);
}
}参考:https://docs.unity3d.com/jp/current/Manual/AssetDatabase.html
ValidateMoveAssetは移動できるかを調べるだけで、ファイルを移しません。
その確認が通った後も、実際のMoveAssetの戻り値を確認してください。
移動後はProjectウィンドウでAssets/B/Sample.pngを確認します。
移動前に記録したGUIDと、Scene・Prefab・Materialからの参照が保たれているかも照合します。
移動先に同名ファイルがある場合は、エラーを確認し、移動先を見直してください。
アセット本体だけをOS側で移すとmetaが取り残されるため、Projectウィンドウで操作します。
公式のmeta資料は、アセットとmetaを一緒に扱う理由を説明しています。
