前提・実現したいこと
Unityを初めて間もない初心者です。
再生ボタンを押すた直後にフリーズしてしまい原因を教えて頂きたいです。
2Dシューティングゲームで敵を出現させるタワーディフェンスのようなWaveシステムを作成しております。
Waveオブジェクトからコルーチンを使いPhaseオブジェクトを生成したあと、さらにStart関数でPhaseオブジェクトからランダムに敵を生成させるようにしたいです。
原因箇所を色々探ってみたのですがみましたがIEnumeratorの使い方が間違っていると予想しています。
何かヒントを頂けると大変助かります。
該当のソースコード
using System.Collections; using System.Collections.Generic; using UnityEngine; public class WaveController : MonoBehaviour { public GameObject[] Phases; private int currentwave = 1; public Transform enemystartPos; IEnumerator Start() { if(Phases.Length == 0) { yield break; } while (true) { GameObject phase = (GameObject)Instantiate (Phases [currentwave],enemystartPos.position,Quaternion.identity); phase.transform.parent = this.transform; while (phase.transform.childCount != 0) { yield return new WaitForEndOfFrame (); } Destroy (phase); if(Phases.Length <= ++currentwave) { currentwave = 0; } } } }
using System.Collections; using System.Collections.Generic; using UnityEngine; //ランダムに敵を生成 全滅したらこのオブジェクトを消す public class PhaseController : MonoBehaviour { public Transform enemystartPos; public GameObject[] enemypattern; // Start is called before the first frame update void Start() { int number = Random.Range(0,enemypattern.Length); GameObject Enemy = (GameObject)Instantiate (enemypattern [number],enemystartPos.position,Quaternion.identity); Enemy.transform.parent = transform; } void Update() { if(transform.childCount == 0) { Destroy(gameObject); } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/12 04:47