Unityの特殊フォルダと各々の役割
Unityは幾つかの特殊フォルダがある。例えばResourcesやPlugins等だ。
特殊フォルダの用途と注意点についてメモしておこうと思う。
追記版を書きました。
- Assets/StreamingAssets
変換していないデータをそのままアプリに組み込めるフォルダ。
pngや音楽といった画像や、データベースといったバイナリデータを組み込む事が出来る。Androidと他で若干アクセス方法が異なるが、Application.streamingAssetsPathでアクセス出来る。ファイルは毎回ビルド時に転送するので、あまりにも多いとビルド時間が伸びる。
[Unity3D] StreamingAssetsについて - WebPlayerTemplates
WebPlayerのテンプレートを配置する。ここにWebPayerのテンプレートを配置すると、WebPlayerからテンプレートを選択できるようになる。
[Unity]WebPlayerでGetMethodのパラメータを取得する - Assets/Gizmos
Gizmoを描画するのに使う。
この場所においた画像はGizmos.DrawIcon()で使用することが出来る。
- Assets/Plugins/iOS
iOS向けにビルドした際、このフォルダに入っている。.a, .m, .mm, .c, .cppといったファイルを組み込む。
色々と処理したい場合、PostprocessBuildPlayerで配置する。
プラグイン開発段階からこのフォルダを使用するよりも、開発完了後に自動化するために使ったほうが作りやすい。
[Unity]iPhone/Androidでネイティブプラグインを作るコツ…みたいなもの
[Unity3D]Unity ネイティブプラグインの作成について - Assets/Plugins/Android
Android向けにビルドした際、このフォルダに含まれてるjarとかそこらへん概ねをAndroidに組み込む。3系はある程度チェックしていたが4系で全部突っ込まれるようになった模様。
これもプラグイン開発段階から使用するより、開発完了後に自動組込み的な用途で使うと良いと思われ。
[Unity]iPhone/Androidでネイティブプラグインを作るコツ…みたいなもの
[Unity3D]Unity ネイティブプラグインの作成について - Assets/Plugins/x86
x86PC向けのネイティブプラグイン。
ユニバーサルで作る場合、これも作っておくほうが吉。
これがない場合、Assets/Pluginsを参照する。
- Assets/Plugins/x86_64
x64向けのプラグイン。
これがない場合、Assets/Pluginsを参照する。
- Assets/Plugins
x86_64及びx86フォルダがない場合、ここに配置されているdllをPC向けと判断する。
また、この場所に配置されているスクリプトは初期段階でビルドされるので、js及びC#で使える。
- Assets/Standard Assets
この場所に配置されているスクリプトは初期段階でビルドされるので、js及びC#で使える。
何となく、この場所に物を大量に置くと重くなるイメージ。
- Assets/Pro Standard Assets
この場所に配置されているスクリプトは初期段階でビルドされるので、js及びC#で使える。
Pro専用
- (任意)/Resources
Resources.Loadで読むファイルを格納するフォルダ。
ランタイムでファイルを呼ぶのに使われる。UTJ的には設計が古いため推奨しないと言っているが、問題が発生したと聞いたことは無いし、パフォーマンスもそこまで悪くない。
親フォルダが何でも良いので、色々な場所に配置されている事が多い。注意点として、このフォルダに配置したファイル任意の拡張子(画像フォーマット・bytes・asset等)のファイルは、別に参照が無くともアプリに組み込まれる。
割と購入したアセットがこれを使っていることがあるため注意。
- (任意)/Editor
エディタスクリプトはこのフォルダに入れる。このフォルダに配置したファイルはコンポーネントとして使用できない。
エディタのみで使用する事を明言している為、ここに配置されたファイルはビルドに含まれない。(逆を言えば、このフォルダ以外に配置されているスクリプトは全てUnityに含まれる)
Unity: Scriptフォルダーの注意点
特別なフォルダー名とコンパイルの順番
Special Folder Names in your Assets Folder