C#
Unity
Editor拡張

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/ResourcesLoaderSettingIsAutoフラグをTrueにします。
スクリーンショット 2017-12-25 20.32.43.png

スクリーンショット 2017-12-25 20.33.40.png

ステップ3

Resourcesフォルダにリソースを入れます。画像の例ではTest.pngをフォルダに入れています。
リソースを入れると、自動的にResourcesLoaderスクリプトが作成されます。
これで準備完了です。
スクリーンショット 2017-12-25 20.55.34.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 SettingCreate Load Parameterで作成できます。
スクリーンショット 2017-12-25 21.42.29.png

ResourcesLoaderSetting

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

パラメータの解説

スクリーンショット 2017-12-25 21.54.26.png

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

LoadParameter

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

パラメータの解説

スクリーンショット 2017-12-25 22.05.45.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からウィンドウが開けます。
スクリーンショット 2017-12-25 22.18.22.png

設定ファイルを指定する

ResourcesLoaderSettingを指定します。
スクリーンショット 2017-12-25 22.21.53.png

生成する

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

現状対応しているタイプ

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

最後に

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

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

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

GitHub

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