前提・実現したいこと
ランダムな敵を一定数出現させ、全部の敵を倒したらボスが出現するプログラムを作っています。
雑魚敵のタグを探してタグが無いとボスが出現するようになっています。
エラーは発生していないのですがオブジェクトのタグを取得するプログラムがupdate内でないと動きません。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
C#
1//ソースコードA 2public class EnemyJoji : MonoBehaviour { 3 4 public GameObject[] Train; //配列生成 5 private int number; 6 GameObject[] Enemy; 7 public GameObject BossEnemy; 8 9 int Count = 0; 10 int max = 5; 11 12 // Use this for initialization 13 void Start () { 14 InvokeRepeating("Generate", 1,1); //毎秒 15 16 Enemy = GameObject.FindGameObjectsWithTag("Enemy"); //ここだと動作しない 17 } 18 19 void Generate() 20 { 21 if (Count <= max) 22 { 23 number = Random.Range(0, Train.Length); //登録したプレハブからランダムな数字を取る 24 float x = Random.Range(-9f, 9f); //X軸のランダムな位置に設定 25 float y = 1; 26 float z = Random.Range(-9f, 9f); //Z軸のランダムな位置に設定 27 Vector3 position = new Vector3(x, y, z); 28 Instantiate(Train[number], position, Quaternion.identity); 29 Count++; 30 } 31 } 32 33 // Update is called once per frame 34 void Update () { 35 if (Enemy.Length <= 0) 36 { 37 Instantiate(BossEnemy, new Vector3(1.0f, 2.0f, 0.0f), Quaternion.identity); 38 } 39 } 40} 41 42 43//ソースコードB 44public class EnemyJoji : MonoBehaviour { 45 46 public GameObject[] Train; //配列生成 47 private int number; 48 GameObject[] Enemy; 49 public GameObject BossEnemy; 50 51 int Count = 0; 52 int max = 5; 53 54 // Use this for initialization 55 void Start () { 56 InvokeRepeating("Generate", 1,1); //毎秒 57 58 59 } 60 61 void Generate() 62 { 63 if (Count <= max) 64 { 65 number = Random.Range(0, Train.Length); //登録したプレハブからランダムな数字を取る 66 float x = Random.Range(-9f, 9f); //X軸のランダムな位置に設定 67 float y = 1; 68 float z = Random.Range(-9f, 9f); //Z軸のランダムな位置に設定 69 Vector3 position = new Vector3(x, y, z); 70 Instantiate(Train[number], position, Quaternion.identity); 71 Count++; 72 } 73 } 74 75 // Update is called once per frame 76 void Update () { 77 Enemy = GameObject.FindGameObjectsWithTag("Enemy"); //ここに移すと動作する 78 if (Enemy.Length <= 0) 79 { 80 Instantiate(BossEnemy, new Vector3(1.0f, 2.0f, 0.0f), Quaternion.identity); 81 } 82 } 83}
試したこと
ソースコードAでは全ての敵を倒してもボスは出現しません。
そこでFindをソースコードBのように変えるとボスが出現します。
ただ、どこのサイトでも言っているようにupdate内でFindを使うのは良くないとのことで
update外で無事に動作する方法を教えて欲しいです。
できればソースコードも見せて頂きたいです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/05 15:29