public static void InitGameController(GameController gameController) { gameController.gameObject.AddComponent<ScoreKeeper>(); gameController.gameObject.AddComponent<TimeKeeper>(); }
例えばMonoBehaviourを継承したGameControllerコンポーネントが存在して
GameControllerコンポーネントがアタッチされたオブジェクトに
スコアを管理するScoreKeeperコンポーネントと
制限時間を監理するTimeKeeperコンポーネントをアタッチしたい場合
gameObjectプロパティが持つAddComponent関数を使う必要がありますが
下記のような拡張メソッドを用意すると
/// <summary> /// コンポーネントを追加します /// </summary> /// <typeparam name="T">追加するコンポーネントの型</typeparam> /// <param name="component">Component型のインスタンス</param> /// <returns>追加したコンポーネント</returns> public static T AddComponent<T>(this Component component) where T : Component { return component.gameObject.AddComponent<T>(); }
public static void InitGameController(GameController gameController) { gameController.AddComponent<ScoreKeeper>(); gameController.AddComponent<TimeKeeper>(); }
gameObjectプロパティを呼び出す必要がなくなるので
少しだけソースコードを短く書けます