UnityのResources.Loadをサポートするツール（Editor拡張）

# はじめに
これから紹介するツールはUnityのResources.Loadを使いやすくするために作成したものになります。
Resources.Loadで読み込むリソースの指定は文字列で行うため、指定を間違えていてもコンパイルエラーにならず実行時にエラーを出してしまう場合があります。このような問題の解決を目指して作成しました。

このツールにはRLS（ResourcesLoadSupport）という名前をつけています。

## とりあえず動かす
次の3ステップでResourcesフォルダからリソースを読み込むことができます。

#### ステップ1
次のURLからRLSのUnityパッケージ（**ResourcesLoadSupport.unitypackage**）がダウンロードできるので、使用したいプロジェクトへインポートします。
https://github.com/Tanakancolle/unity-resources-load-support/releases/tag/pre

#### ステップ2
**ResourcesSupport/Scripts/Editor/Setting/ResourcesLoaderSetting**の**IsAuto**フラグを**True**にします。
<img width="668" alt="スクリーンショット 2017-12-25 20.32.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/161730/2f48c258-2932-7ae8-dce2-64f659881934.png">
↓
<img width="667" alt="スクリーンショット 2017-12-25 20.33.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/161730/026ebfa7-369a-ec6e-47b0-77984b9a6039.png">

#### ステップ3
**Resourcesフォルダ**にリソースを入れます。画像の例では**Test.png**をフォルダに入れています。
リソースを入れると、自動的にResourcesLoaderスクリプトが作成されます。
これで準備完了です。
<img width="253" alt="スクリーンショット 2017-12-25 20.55.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/161730/af1129ce-f8de-d9f2-eaff-f0137986835d.png">

####動作確認
適当なスクリプトに`ResourcesLoader.Load( ResourcesLoader.{リソースタイプ}Name.{リソース名} )`のように記述しましょう。戻り値で指定したリソースのインスタンスが取得できます。

##### 例
Test.pngを読み込む場合
`Sprite sprite = ResourcesLoader.Load(ResourcesLoader.SpriteName.Test);`

Test.txtを読み込む場合
`TextAsset textAsset = ResourcesLoader.Load(ResourcesLoader.TextAssetName.Test);`

## RLSが行なっていること
動作が確認できたところで、RLSが行なっていることを解説します。

RLSの基本機能は、Resourcesフォルダ内にあるリソースを管理するスクリプトを作成する機能です。ステップ2で行なった、IsAutoをTrueにすることで、この機能がResourcesフォルダに変化があったとき、自動で行われるようになります。作成されるスクリプトは次で解説する**設定ファイル**により、変更可能です。

## 設定ファイルについて
RLSの動作は2種類の設定ファイルにより、変化します。
設定ファイルはメニューの**Create Setting**と**Create Load Parameter**で作成できます。
<img width="241" alt="スクリーンショット 2017-12-25 21.42.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/161730/39433334-1f67-e7fd-afb3-1ce103589024.png">

### ResourcesLoaderSetting 
まず**Create Setting**で作成できる**ResourcesLoaderSetting**について解説します。
この設定ファイルはRLSが作成するスクリプトの全体の設定を行います。

#### パラメータの解説
<img width="358" alt="スクリーンショット 2017-12-25 21.54.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/161730/e20a541b-df32-2d58-d6f7-b5613d927be9.png">

| パラメータ名       | 解説 |
|:---------------:|:----|
|Create Class Name|スクリプトの名前を指定できます|
|Create Path      |スクリプトが作成されるディレクトリを指定できます。空白の場合は**Assets/**に作成されます|
|Parameters        |もう一つの設定ファイルである**LoadParameter**を指定します。これにより、管理するリソースを変更できます|
|Edit Usings|スクリプトに宣言される**using**を指定します|
|Is Auto|Resourcesフォルダに変化があったとき、自動的にスクリプトを作成するかのフラグです|
|Ignore File Names|ここで指定したファイル名のリソースは管理されなくなります。拡張子を除いたファイル名を指定します|

### LoadParameter
続いて**Create Load Parameter**で作成できる　**LoadParameter**について解説します
この設定ファイルでは管理するリソースの指定が行えます。管理したいリソースのタイプ毎にLoadParameterを作成します。

#### パラメータの解説
<img width="366" alt="スクリーンショット 2017-12-25 22.05.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/161730/6b62b5d3-ac05-294f-e0d4-f88dc5b2f7f8.png">

| パラメータ名       | 解説 |
|:---------------:|:----|
|Type Name|リソースのタイプを指定します（例：Texture、Sprite、TextAsset …etc）|
|Edit Load Type|使用したい読み込み方法を指定します|
|Target Extensions|このType Nameで指定したタイプで管理したい拡張子を指定します（例：Textureならpng、jpg、gif …etc）|
|Edit Usings|スクリプトに宣言される**using**を指定します|

## 手動実行でスクリプトを作成する
自動ではなく、手動でスクリプトの作成を行うこともできます。

### ウィンドウを開く
メニューにある**Open Create Loader Window**からウィンドウが開けます。
<img width="245" alt="スクリーンショット 2017-12-25 22.18.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/161730/71814257-c086-34b7-42cd-dd705cec2e81.png">

### 設定ファイルを指定する
ResourcesLoaderSettingを指定します。
<img width="407" alt="スクリーンショット 2017-12-25 22.21.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/161730/776d3f89-c405-58a4-a8bc-07de28d94b49.png">

### 生成する
**生成**ボタンをクリックすることで、指定した設定ファイルからスクリプトが作成されます。

## 現状対応しているタイプ
**AudioClip、GameObject、Sprite、Texture、TextAsset**です。
適当に思いついたタイプを対応しただけなので、抜けがあります。その場合はLoadParameterの設定ファイルを増やしてください。

# 最後に
RLSの機能をおおまかに解説を行なってきましたが、いかがでしたでしょうか。少しでも便利そうと思って頂けたら嬉しいです。

使用する場合はResourcesLoaderSettingを複製し、RLS外のフォルダに入れることを推奨しています。
理由はRLSをアップデートする毎に設定が上書きされてしまうためです。

RLSはまだ未完成の部分が多くあるため、しばらくは管理と機能の追加を行おうと思っています。GitHubのURLを載せておきますので、何か気になる点や読み込めないリソースタイプ等ありましたら、issuesを送って頂けると嬉しいです。

## GitHub
https://github.com/Tanakancolle/unity-resources-load-support