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系に移行した方は見落としそうなこのメソッド、しっかりと使っていきたいですね。