質問: chara.GetComponent(); } public void CharaMove() { _controller.Move(); } } CharaController.cs public class CharaController : MonoBehaviour { public void Move() { //キャラクターを目的地に動かす } } どなたかご教授をお願い致します。
回答: `chara`や`_charaController`が常に上書きされているため、参照先は最後に作ったものになっています。 いろいろアプローチはあるかと思いますが、作成したキャラをリストとかで管理しておくのが良いかなと思いました。 GameObject型でList作ってますが、CharaController型で作ってしまってもいいかもしれません ``` public class PrefabGenerator : MonoBehaviour { public GameObject charaPrefab; GameObject chara; CharaController _charaController; // 作成したPrefabを管理するリスト List charaList = new List(); //ここを5回呼んでインスタンスを5個生成します public void GenerateChara() { chara = (GameObject)Instantiate(charaPrefab) as GameObject; chara.transform.position = randomPos; charaList.Add(chara); // リストにインスタンス化したオブジェクトを追加 //ここでスクリプトをGetComponentするのが間違いかも? // _charaController = chara.GetComponent(); } public void CharaMove() { // foreachでリストを1個ずつ取り出してメソッドを呼ぶ foreach(GameObject chara in charaList){ chara.GetComponent().Move(); } } } ```