VOL.4 — ASSET LOADER

フォルダに置くだけ

Unity の「インポート地獄」を解消する

Unity でゲームを作る際、もっとも煩雑な作業の一つが アセットのインポート設定です。 画像の圧縮形式、Max Size、Filter Mode、Sprite の Pivot Point…… ゲームの本質とは関係のない設定に、多くの時間が奪われます。

VN Studio では、この煩雑さを根本から排除しました。 ファイルをフォルダに置くだけで、エンジンが自動的に認識します。

AssetLoader の自動探索

AssetLoader はスクリプトで指定されたファイル名(例: bg school)を受け取ると、 以下のプロセスで実ファイルを解決します:

1. 拡張子の自動補完

スクリプトでは拡張子を省略できます。AssetLoader が自動的に候補を探します:

# スクリプトに書くのはこれだけ
bg school

# 内部で以下の順に探索される
school.png → school.jpg → school.webp → school.bmp

2. ResourceRoot の上方探索

プロジェクトフォルダが深い階層にあっても、最大 10階層 上まで ResourceRoot(アセットの基準フォルダ)を探索します。 これにより、どこにプロジェクトを配置しても自動的にアセットが見つかります。

3. Unity の Resources.Load を使わない

通常の Unity 開発では、動的にロードするアセットは Resources フォルダに配置し、Resources.Load() で呼び出します。 しかしこの方法には問題があります:

  • アセットを Unity プロジェクト内に配置する必要がある(コピーが必要)
  • アセット変更時に Unity のインポート処理が走る(時間がかかる)
  • 大量ファイルでメモリを圧迫する

VN Studio は Unity プロジェクトの外にアセットを配置し、 ファイルシステムから直接読み込みます。 これにより、Unity のインポートプロセスを完全にバイパスし、 画像を保存した瞬間にプレビューに反映されます。

ユーザーが画像を保存すれば、即ゲーム画面に反映されます。
アプリの再インポート待ちは不要です。

ディレクトリ構造の規約

ProjectRoot/
├── scenario/          # スクリプトファイル (.scn)
│   ├── Main.scn
│   └── chapter1.scn
├── image/             # 画像アセット
│   ├── bg/            # 背景画像
│   └── chara/         # キャラクター画像
├── bgm/               # BGM ファイル
├── se/                # 効果音ファイル
└── system/            # システムリソース

このルールさえ守れば、あとはファイルを置くだけ。 複雑な操作は一切必要ありません。

次回予告

Vol.5 では、ここまで解説してきたすべての仕組みを Z80コンピュータ(レトロPC)に移植する挑戦を記録します。 Z80 CPU、64KB メモリ、256色——究極の制約環境での実装記録です。