LoginSignup
8
9

More than 5 years have passed since last update.

Unity5.0からInstantiateメソッドにジェネリックなオーバーロードが加わった

Posted at

Unity5.0からプレファブからゲームオブジェクトを作成する、UnityEngine.Object.Instantiateメソッドに、ジェネリックなオーバーロードが加わりました。

次のコードは、HpBarクラスのプレファブからHpBarクラスのゲームオブジェクトを作成するコードです。

Unity4.X系では次のようにHpBarクラスにasで変換する(もしくはキャストする)必要がありました。

Unity4.X系でプレファブからゲームオブジェクトを作る
public class CharacterBehaviour : MonoBehaviour
{
    [SerializeField] HpBar hpBarPrefab;

    HpBar hpBar;

    void Awake()
    {
        hpBar = Instantiate(hpBarPrefab) as HpBar;
    }
}

Unity5.0からジェネリックなオーバーロードのInstantiateメソッドが加わったので、Unity5.x系ではas演算子やキャストが不要になりました。

Unity5.X系でプレファブからゲームオブジェクトを作る
public class CharacterBehaviour : MonoBehaviour
{
    [SerializeField] HpBar hpBarPrefab;

    HpBar hpBar;

    void Awake()
    {
        // 以下のようにも記述できるが、型パラメータは冗長
        // hpBar = Instantiat<HpBar>(hpBarPrefab);

        // 短く簡潔!!!
        hpBar = Instantiate(hpBarPrefab);
    }
}

毎度プレファブからゲームオブジェクトを作成した際の面倒だったasやキャストがUnity5.0からは不要になりましたね!

Unity4.x系の開発に慣れていて、最近5.x系に移行した方は見落としそうなこのメソッド、しっかりと使っていきたいですね。

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9