«Fixed» Unity - удаляет тайлы карт тайлов одну за другой с задержкой - PullRequest
0 голосов
/ 28 августа 2018

Я пытался получить листы Tilemap, и я мог получить их с помощью кода, который я нашел в другом вопросе:

    BoundsInt bounds = Lvl1.cellBounds;
    TileBase[] allTiles = Lvl1.GetTilesBlock(bounds);

    for (int x = 0; x < bounds.size.x; x++)
    {
        for (int y = 0; y < bounds.size.y; y++)
        {
            TileBase tile = allTiles[x + y * bounds.size.x];
            if (tile != null)
            {
                Lvl1.SetTile(new Vector3Int(x, y, 0), null);
                StartCoroutine(BreakDelay());
            }
            else
            {
                //Debug.Log("x:" + x + " y:" + y + " tile: (null)");
            }
        }
    }

Но теперь я хочу удалить каждую плитку, зарегистрированную одну за другой, например, с задержкой «0.1f». Я пробовал много способов, которые не работали так, как я хотел, поэтому я сдался, потом я вспомнил StackOverflock, и теперь я здесь, пытаясь получить некоторую помощь, так кто-нибудь знает решение для этого?

Заранее спасибо!

1 Ответ

0 голосов
/ 28 августа 2018
StartCoroutine(BreakDelay());

Это не так, как работают сопрограммы.

Этот запускает выполнение сопрограммы (которая может приостановиться в любое время), но не приостанавливает выполнение вызывающей стороны.

Если вы хотите, чтобы ваш текущий код ожидал, вам нужно сделать it сопрограммой:

StartCoroutine(DeleteTiles());

...

private IEnumerator DeleteTiles() {
    BoundsInt bounds = Lvl1.cellBounds;
    TileBase[] allTiles = Lvl1.GetTilesBlock(bounds);

    for (int x = 0; x < bounds.size.x; x++)
    {
        for (int y = 0; y < bounds.size.y; y++)
        {
            TileBase tile = allTiles[x + y * bounds.size.x];
            if (tile != null)
            {
                Lvl1.SetTile(new Vector3Int(x, y, 0), null);
                yield return new WaitForSeconds(1); //or however long
            }
            else
            {
                //Debug.Log("x:" + x + " y:" + y + " tile: (null)");
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...