さけのさかなのブログ

同人ゲーム開発やってます。Unity使ったりする。

【Unity】ResourceLoaderクラス

やること

 Resources.LoadAsync<T>を処理する便利クラスをつくる。

 これによって、たとえば、Resources.LoadAsync<T>はせっかくジェネリックメソッドなのに、assetを取り出すときにはキャストが必要、とかの煩雑さを解決する。

コード

gist.github.com

使い方

 newしてyieldで待つ。

 取り出すときにはasset as Tのようなキャストが不要。

var loader = new ResourceLoader<Hoge>("path");
yield return loader;
var hoge = loader.Asset;

 クラスなので、↓のように継承することで機能を足せる。

public class HogeLoader : ResourceLoader<Hoge>
{
    public HogeLoader(string path) : base(path)
    {
    }
    public HogeLoader(int id) : base("Hoge/" +id.ToString())
    {
    }
}