こんにちは。
大虎工房です。

今回はUnityのTips。
と、いっても教えてもらったやつですけどね笑

UnityのソースコードとPrefabってなかなかきれいに分離できないのですが、この問題をすっきり見えるようにするテクニック。

public class Indicator : MonoBehaviour {
    public static Indicator Instantiate()
    {
        var prefab = Resources.Load<gameobject>("Prefab/Indicator");
        var go = Instantiate(prefab);
        return go.GetComponent<indicator>();
    }
}

PrefabにアタッチするIndicatorクラスに、自分自身をInstantiateする関数をstaticで用意すると利便性が高いというやつです。

public class GameEngine
{
    private Indicator _indicator;
    public void Init()
    {
        _indicator = Indicator.Instantiate();
    }
}

こんな感じに使えて便利。

欠点は、Resourcesに依存してるため、アセットバンドルとの相性が悪いこと。
だけど、Resourcesクラス自体を独自のリソースマネージャに変換してあげることで手法自体がダメなわけじゃないと思う。

非同期ロードとか色々考えだすとキリないですが、まぁプリプロ作るには便利です。

それでは~