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

Unityのunitypackageで何が更新される?旧検証と移動・改名の確認

この記事は、.unitypackageで素材を受け渡した旧検証の記録です。

検証したUnityの版、元のパッケージ、GUIDの比較記録は確認できていません。

今回インポート実験を再実行していないため、階層や名前がすべての版・条件で変わらないという仕様としては扱いません。

Package ManagerのUPMパッケージ更新とは別の話です。

目次

検証用データの準備

元記事では、新規Unityプロジェクトから以下の3種類を作成しています。

Packing Tagは旧Sprite Packer用の設定例で、現在のSprite Atlas V2へ置き換える設定ではありません。

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の配置のままでした。

受け取り側の状態やGUIDを変えた条件の結果までは示していません。

Pack03のインポート成功

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を一緒に扱う理由を説明しています。

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

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

Unityのおすすめ書籍

開発PCの選び方

周辺機器の優先度

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