読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

Unityの特殊フォルダと各々の役割(追記版)

Unity

EUnityは幾つかの特殊フォルダがある。例えば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に含まれる)

    追記:Editorフォルダだが、rootフォルダがPluginsの場合かつ1個間にフォルダがある場合はEditorフォルダのルールが適応されないらしい。つまり、Plugins/EditorはOKだが、Plugins/(任意)/Editorは駄目。 Standard Assetsも同様なのでJSで組む場合は注意すべし。
    (指摘ありがとうございます!)

    追記:ビルド プレイヤー パイプラインを使用する場合は別。Assets/Editorのみっぽい。

  • Assets/Editor Default Resources/Icons (追記)
    このフォルダにアイコンを入れると、EditorWindowと同じ場合アイコンが変化するらしい。
    EidtorWindowのタイトルに好きなアイコンを付けてみた

参考
Unity: Scriptフォルダーの注意点
特別なフォルダー名とコンパイルの順番
Special Folder Names in your Assets Folder