3

Unity 2D プロジェクトのメインの Gameplay.cs スクリプトでコードのこのセクションに長い間取り組んできましたが、どのように変更して物事をシフトしても、Unity が Play でロックアップするか、 、いくつかの調整の後、すぐに Wave 0 から Wave 9 に移動します。これが私の最初の試みで、Unity が Play でフリーズします。なぜこれが起こるのか理解できず、私の論理がどこで間違っているのかについての洞察が欲しい.

私は次のことを達成しようとしています:

  • Play では、ゲームは startWait 秒待機します。
  • startWait の後、ゲームは SpawnWaves() メソッドに入り、各ウェーブ間で waveWait 秒待機し、ウェーブごとにウェーブ カウントを 1 ずつ増やします。
  • すべての波はゾンビをスポーンし、敵の数をカウントし、各ゾンビがスポーンされるまで spawnWait 秒待機します。


private float startWait = 3f;   //Amount of time to wait before first wave
private float waveWait = 2f;    //Amount of time to wait between spawning each wave
private float spawnWait = 0.5f; //Amount of time to wait between spawning each enemy

private float startTimer = 0f; //Keep track of time that has elapsed since game launch private float waveTimer = 0f; //Keep track of time that has elapsed since last wave private float spawnTimer = 0f; //Keep track of time that has elapsed since last spawn private List<GameObject> zombies = new List<GameObject>(); [SerializeField] private Transform spawnPoints; //The parent object containing all of the spawn point objects void Start() { deathUI.SetActive(false); //Set the default number of zombies to spawn per wave zombieCount = 5; PopulateZombies(); } void Update() { startTimer += Time.deltaTime; if (startTimer >= startWait) { waveTimer += Time.deltaTime; spawnTimer += Time.deltaTime; SpawnWaves(); } //When the player dies "pause" the game and bring up the Death screen if (Player.isDead == true) { Time.timeScale = 0; deathUI.SetActive(true); } } void SpawnWaves() { while (!Player.isDead && ScoreCntl.wave < 9) { if (waveTimer >= waveWait) { IncrementWave(); for (int i = 0; i < zombieCount; i++) { if (spawnTimer >= spawnWait) { Vector3 spawnPosition = spawnPoints.GetChild(Random.Range(0, spawnPoints.childCount)).position; Quaternion spawnRotation = Quaternion.identity; GameObject created = Instantiate(zombies[0], spawnPosition, spawnRotation); TransformCreated(created); spawnTimer = 0f; } } waveTimer = 0f; } } }

私は初心者であり、コードがベスト プラクティスに従っていない可能性があることを理解しています。また、コルーチンを使用してリターンを生成する敵のスポナーも動作していますが、このバージョンの敵のスポーンを動作させたいと考えています。

4

2 に答える 2