Почему не останавливается Coroutine?
Добавлено: 15 янв 2021, 15:14
Синтаксис:
Используется csharp
public void ReDeletePlatforms(InputAction.CallbackContext context)
{
Debug.Log("Нажал");
StopCoroutine(spawning);
Debug.Log("Остановил корутину");
destroyPlatforms = GameObject.FindGameObjectsWithTag("Platform");
for (int i3 = 0; i3 < destroyPlatforms.Length; i3++)
{
Instantiate(destroyPlatforms[i3], destroyPlatforms[i3].transform.position, Quaternion.identity);
destroyPlatforms[i3].gameObject.tag = "PlatfomRealy";
Destroy(destroyPlatforms[i3]);
}
StartCoroutine(Spawning());
}
public IEnumerator Spawning()
{
for (int i = 0; i < 4; i++)
{
//Debug.Log(i);
yield return new WaitForSeconds(1);
int plNumber = Random.Range(0, platforms.Length);
float posX = Random.Range(DownLeft.x, DownRight.x);
float posY = Random.Range(DownRight.y, UpRight.y);
Vector3 vector3 = new Vector3(posX, posY, 0);
Instantiate(platforms[plNumber], vector3, Quaternion.identity);
if (i == 3)
{
//Debug.Log("Stopped!");
StopCoroutine("Spawning");
Destroying();
}
}
}
{
Debug.Log("Нажал");
StopCoroutine(spawning);
Debug.Log("Остановил корутину");
destroyPlatforms = GameObject.FindGameObjectsWithTag("Platform");
for (int i3 = 0; i3 < destroyPlatforms.Length; i3++)
{
Instantiate(destroyPlatforms[i3], destroyPlatforms[i3].transform.position, Quaternion.identity);
destroyPlatforms[i3].gameObject.tag = "PlatfomRealy";
Destroy(destroyPlatforms[i3]);
}
StartCoroutine(Spawning());
}
public IEnumerator Spawning()
{
for (int i = 0; i < 4; i++)
{
//Debug.Log(i);
yield return new WaitForSeconds(1);
int plNumber = Random.Range(0, platforms.Length);
float posX = Random.Range(DownLeft.x, DownRight.x);
float posY = Random.Range(DownRight.y, UpRight.y);
Vector3 vector3 = new Vector3(posX, posY, 0);
Instantiate(platforms[plNumber], vector3, Quaternion.identity);
if (i == 3)
{
//Debug.Log("Stopped!");
StopCoroutine("Spawning");
Destroying();
}
}
}
Вот метод сверху, он корутину не останавливает, только создает объекты (или стартует ещё раз корутину на 1 цикл) и не меняет тег. Снизу сама корутина. А вот ещё список переменных, которые я объявил
Синтаксис:
Используется csharp
public GameObject[] platforms;
public GameObject[] destroyPlatforms;
public Vector3 DownLeft;
public Vector3 DownRight;
public Vector3 UpLeft;
public Vector3 UpRight;
//Coroutine co = StartCoroutine(myEnum.GetEnumerator());
private Coroutine spawning;
public GameObject[] destroyPlatforms;
public Vector3 DownLeft;
public Vector3 DownRight;
public Vector3 UpLeft;
public Vector3 UpRight;
//Coroutine co = StartCoroutine(myEnum.GetEnumerator());
private Coroutine spawning;