タイトル: アセット(Asset)
SEOタイトル: Unity Asset(アセット)完全ガイド(Assets フォルダ/.meta/AssetBundle/Addressables)
| この記事の要点 |
|
Asset とは
Unity における Asset(アセット)とは、プロジェクトで利用するあらゆる素材ファイルの総称です。3D モデルやテクスチャだけでなく、スクリプト・シェーダー・プレハブ・アニメーション・音声・フォントまで含まれます。
| カテゴリ | 拡張子(例) | 用途 |
|---|---|---|
| 3D モデル | .fbx / .obj / .blend | キャラ・地形・小物 |
| テクスチャ | .png / .jpg / .tga / .psd | 表面の絵柄 |
| マテリアル | .mat | シェーダー設定の組 |
| シェーダー | .shader / .hlsl / .shadergraph | 描画ロジック |
| スクリプト | .cs | C# コード |
| Prefab | .prefab | 使い回し可能なオブジェクト雛形 |
| アニメーション | .anim / .controller | キーフレーム・状態遷移 |
| 音 | .wav / .mp3 / .ogg | BGM / 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 Store(assetstore.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("Assets/Materials/Red.mat");
// プログラムからアセット作成
var so = ScriptableObject.CreateInstance();
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 で読込。全部ビルドに含まれメモリに常駐 | 小規模/プロトタイプ向け |
| AssetBundle(旧来) | 事前ビルド → サーバ配信。手動依存管理が辛い | レガシー保守 |
| Addressables(推奨) | アドレスでロード、依存解決自動、リモート配信対応 | 新規プロジェクトはこちら |
// Addressables の例(Package Manager で導入後)
using UnityEngine.AddressableAssets;
var op = Addressables.LoadAssetAsync("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 は常駐コストが大きく、規模が伸びると破綻します。