【Unity】Resources.LoadAsyncするけどパス指定したくない
やること
 ロード処理においてResources.LoadAsyncを使いたい。が、いちいちパス指定するのが嫌、という場合のための仕組みをつくる。
 
コード
使い方
アセットのクラスごとに継承したクラスを作る。
using UnityEngine; using System.Collections; namespace TSKT { public class PrefabReferer : ResourceReferer<GameObject> { } }
 ScriptableObjectファイルを作成して、インスペクタでassetフィールドにResourcesフォルダ下のファイルを紐づける。
 すると、pathフィールドが自動で更新される。
 で、実行時にLoad()を呼び出すと、pathフィールドを使ってResources.LoadAsyncを行う。
参照
 ロード処理は前回のResourceLoaderを使っている。
びみょう?
 わざわざScriptableObjectファイルを作るのが面倒。
 [Serializable]なクラスを作ってその中で処理できれば最高だったんだけど、OnValidate相当の機能がなさそうだったのであきらめた。
 OnValidateさえあれば、参照しているassetファイルからパスを取得し、pathフィールドを自動更新する処理を書くことができる。
修正
UNITY_EDITORを使ってビルド時にフィールドを減らしたりするとエラーになるので良くない。というわけで回りくどいけどguidを取得してやることにした。