【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を取得してやることにした。