6.

Unity Asset(アセット)完全ガイド(Assets フォルダ/.meta/AssetBundle/Addressables)

編集
この記事の要点
  • Asset = Unity プロジェクトで利用する素材全般(3D モデル/テクスチャ/マテリアル/スクリプト/音/Prefab/Animation 等)
  • すべて Assets/ フォルダ配下に保存される。各ファイルには .meta(GUID/インポート設定)が自動生成
  • .meta は Git でコミット必須。これを管理しないと参照が壊れる
  • 配布: Asset Store(有償/無償)/自作/UnityPackage 形式でやり取り
  • 実行時動的読込: AssetBundle(旧来)と Addressables(推奨)。AssetDatabase は Editor 専用

Asset とは

Unity における Asset(アセット)とは、プロジェクトで利用するあらゆる素材ファイルの総称です。3D モデルやテクスチャだけでなく、スクリプト・シェーダー・プレハブ・アニメーション・音声・フォントまで含まれます。

カテゴリ拡張子(例)用途
3D モデル.fbx / .obj / .blendキャラ・地形・小物
テクスチャ.png / .jpg / .tga / .psd表面の絵柄
マテリアル.matシェーダー設定の組
シェーダー.shader / .hlsl / .shadergraph描画ロジック
スクリプト.csC# コード
Prefab.prefab使い回し可能なオブジェクト雛形
アニメーション.anim / .controllerキーフレーム・状態遷移
.wav / .mp3 / .oggBGM / SE
2D スプライト.png(Sprite Mode)2D ゲームのキャラ・UI
Scriptable Object.assetデータ専用クラス
シーン.unityレベルファイル

Assets フォルダ構成

Unity プロジェクトのルートには次のフォルダが作られます。アセットはすべて Assets/ 配下に置きます。

MyUnityProject/
├── Assets/              ← ★ ここがアセットルート
│   ├── Scenes/
│   ├── Scripts/
│   ├── Prefabs/
│   ├── Materials/
│   ├── Textures/
│   ├── Models/
│   └── ...
├── Library/             ← インポートキャッシュ(Git 無視)
├── Logs/                ← ログ
├── Packages/            ← Package Manager 管理
├── ProjectSettings/     ← プロジェクト設定(コミット要)
├── Temp/                ← 一時(Git 無視)
└── UserSettings/        ← ユーザ固有設定(Git 無視)

.meta ファイル(重要)

Assets/ 内の各ファイル・フォルダには、同名の .meta ファイルが自動生成されます。これには次の情報が含まれます。

  • GUID: アセットを一意に識別する 32 桁の ID。シーンや Prefab はこの GUID で参照を保持
  • importer 設定: テクスチャの圧縮、Sprite Mode、Mesh のスケール、Animation Type など
  • Asset Bundle 名(旧来の AssetBundle 機構用)
# 例: hero.png.meta(実物の抜粋)
fileFormatVersion: 2
guid: a1b2c3d4e5f60718293a4b5c6d7e8f90
TextureImporter:
  textureType: 8                # Sprite (2D and UI)
  mipmaps:
    mipMapMode: 0
  alphaIsTransparency: 1
  spriteImportMode: 1
  spritePixelsToUnits: 100

.meta は Git にコミットする

.meta を無視すると参照が壊れます。新マシンで開いたときに GUID が再生成されてしまい、Prefab/シーンの参照がすべて失われます。Unity 標準の .gitignore を使ってください。

# Unity 推奨 .gitignore(抜粋)
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
[Bb]uild/
[Bb]uilds/
[Ll]ogs/
[Uu]ser[Ss]ettings/

# ❌ Assets/ や *.meta は ignore しない!

Asset Store

Unity 公式の Asset Storeassetstore.unity.com)から、サードパーティ製のモデル・スクリプト・ツールを購入・無料入手できます。

  • カテゴリ: 3D モデル / テクスチャ / ツール / オーディオ / VFX など
  • 支払: クレジットカード or PayPal、税込価格表示
  • 個人のマイページに紐づき、新プロジェクトでも再ダウンロード可
  • セール頻繁(春・夏・ブラックフライデーは大幅割引)

UnityPackage 形式

アセットを別プロジェクトに移したり、配布したりするのに使われるパッケージ形式が .unitypackage です。.meta も含めて圧縮されているため、開く側で GUID が保たれます。

書き出し: Assets を選択 → 右クリック → Export Package
読み込み: Assets → Import Package → Custom Package

Importer 設定(Inspector)

アセットを選択すると、Inspector に Importer 設定が表示されます。これはファイルそのものを書き換えるのではなく、.meta に保存される取り込み方の指示です。

Asset 種別主な設定
テクスチャTexture Type / Compression / Mip / Sprite Mode / Max Size
モデル (FBX)Scale Factor / Mesh Compression / Read/Write / Animation Type
オーディオLoad Type / Compression / 3D Sound
スクリプト(Importer 無し、コンパイル対象)

AssetDatabase API(Editor 専用)

using UnityEditor;

// パスから GUID へ
string guid = AssetDatabase.AssetPathToGUID("Assets/Prefabs/Hero.prefab");

// GUID からパスへ
string path = AssetDatabase.GUIDToAssetPath(guid);

// アセットを動的にロード(Editor 限定)
var mat = AssetDatabase.LoadAssetAtPath<Material>("Assets/Materials/Red.mat");

// プログラムからアセット作成
var so = ScriptableObject.CreateInstance<MyData>();
AssetDatabase.CreateAsset(so, "Assets/Data/MyData.asset");
AssetDatabase.SaveAssets();

// 検索
string[] guids = AssetDatabase.FindAssets("t:Prefab", new[] { "Assets/Prefabs" });

AssetDatabase は Editor 専用です。実行時ビルドには含まれません。

実行時のアセット読込: Resources / AssetBundle / Addressables

機構特徴用途
Assets/Resources/Resources.Load<T>("name") で読込。全部ビルドに含まれメモリに常駐小規模/プロトタイプ向け
AssetBundle(旧来)事前ビルド → サーバ配信。手動依存管理が辛いレガシー保守
Addressables(推奨)アドレスでロード、依存解決自動、リモート配信対応新規プロジェクトはこちら
// Addressables の例(Package Manager で導入後)
using UnityEngine.AddressableAssets;

var op = Addressables.LoadAssetAsync<GameObject>("Hero");
op.Completed += handle => Instantiate(handle.Result);

Asset 管理のベストプラクティス

  • フォルダ命名は機能別(Scripts / UI / Audio)よりも、機能単位の縦割り(Player/ Enemy/ UI/ ...)が破綻しにくい
  • 大文字小文字を統一。WSL / macOS で同名衝突するリスクあり
  • Resources/ は最小限。すべて常駐するためビルドサイズ・起動時間が伸びる
  • サードパーティアセットは Assets/Plugins/Vendor/ に分離してアップデートを楽に
  • 大型 PSD / FBX は Git LFS で管理

FAQ

Q: .meta を消してしまった、復旧できますか?
A: GUID は再生成されてしまうため、参照(Prefab / シーン)は手動で貼り直しになります。Git の履歴から復旧するか、欠落分だけ参照修復してください。

Q: Asset Store のアセットを GitHub に上げて良い?
A: Asset Store EULA で再配布禁止です。公開リポジトリに含めると規約違反になります。

Q: Resources と Addressables、どちらを使う?
A: 新規ならば Addressables 一択です。Resources は常駐コストが大きく、規模が伸びると破綻します。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. プロジェクト(Project)
  2. シーン(Scene)
  3. ヒエラルキー(Hierarchy)
  4. ゲームオブジェクト(Game Object)
  5. インスペクター(Inspector)
  6. アセット(Asset)

最近更新/作成されたページ