Загрузка...

Help with code

Thread in C# created by Maxim1x Feb 24, 2023. 196 views

  1. Maxim1x
    Maxim1x Topic starter Feb 24, 2023 0 Nov 8, 2021
    пытаюсь решить проблему уже долго,место одного обьекта у меня спавняться по два ,вот скрипт:


    using System.Collections;

    using System.Collections.Generic;

    using UnityEngine;





    public class spawner : MonoBehaviour

    {

    public Transform SpawnPos;

    public GameObject Cube;









    void Start()

    {



    StartCoroutine(SpawnCD());

    }



    void Repeat()

    {

    StartCoroutine(SpawnCD());

    }

    IEnumerator SpawnCD()

    {

    Vector2 pos = new Vector2(Random.Range(-6.87f, 6.74f), Random.Range(3.62f, 3.63f));

    yield return new WaitForSeconds(1.0f);

    Instantiate(Cube, pos, Quaternion.identity);

    Repeat();

    }



    }

    че делать?
     
    1. artem19_03
      Maxim1x,
      Проблема заключается в том, что метод Repeat() вызывается дважды: в методе Start() и внутри корутины SpawnCD(). Это приводит к тому, что каждый раз, когда корутина SpawnCD() вызывает метод Repeat(), он запускает еще одну корутину, которая будет создавать дополнительные кубы.

      Для исправления этой проблемы необходимо удалить вызов Repeat() из метода Start(), и оставить его только внутри корутины SpawnCD(). Вот исправленный код:

      using System.Collections;

      using System.Collections.Generic;

      using UnityEngine;



      public class spawner : MonoBehaviour

      {

      public Transform SpawnPos;

      public GameObject Cube;



      void Start()

      {

      StartCoroutine(SpawnCD());

      }



      IEnumerator SpawnCD()

      {

      Vector2 pos = new Vector2(Random.Range(-6.87f, 6.74f), Random.Range(3.62f, 3.63f));

      yield return new WaitForSeconds(1.0f);

      Instantiate(Cube, pos, Quaternion.identity);

      Repeat();

      }



      void Repeat()

      {

      StartCoroutine(SpawnCD());

      }

      }


      Теперь метод Repeat() будет вызываться только после задержки в 1 секунду внутри корутины SpawnCD(), и не будет вызываться из метода Start(). Это позволит создавать только один куб за раз.
    2. Maxim1x Topic starter
      artem19_03, привет,код к сожалению не помог( обьект все равно спавниться 2 раза(
    3. Maxim1x Topic starter
    4. View the next comments (1)
Top
Loading...