Unity - 在我按下停止按钮之前任务不会开始

问题描述 投票:0回答:0

我正在尝试使用任务来检测我的 match-3 项目中的死锁和随机播放。但是直到我按下退出按钮它才起作用。

`        public static async void CheckDeadlock(Tile[,] Tiles)
        {
            var isDeadlocked = await Task.Run(() =>
           {
               return IsShuffleNeeded(Tiles);
           });

            if (isDeadlocked)
            {
                //DoShuffle
                Debug.Log("Shuffle");
            }
        }

        public static async Task<bool> IsShuffleNeeded(Tile[,] Tiles)
        {
            for (int i = 0; i < Tiles.GetLength(1); i++)
            {
                for (int j = 0; j < Tiles.GetLength(0); j++)
                {
                    if (!FindPossibleMatches(Tiles[j, i]))
                    {
                        return true;
                    }
                    await Task.Yield();
                }
            }

            return false;
        }`

我也在这里调用任务。在 Start 方法中调用 DoInitialFill 方法。

public void DoInitialFill(Tile[,] Tiles)
`        {
            for (int i = 0; i < Tiles.GetLength(1); i++)
            {
                for (int j = 0; j < Tiles.GetLength(0); j++)
                {
                    var newPiece = pieceProvider.GetRandomPiece();
                    Tiles[j, i].SetPiece(newPiece);
                    newPiece.SetPosition(Tiles[j, i].transform.position);
                    while (CheckInitialMatch(Tiles[j, i]))
                    {
                        poolManager.ReleaseObject(newPiece);
                        newPiece = pieceProvider.GetRandomPiece();
                        Tiles[j, i].SetPiece(newPiece);
                        newPiece.SetPosition(Tiles[j, i].transform.position);
                    }
                }
            }

            DeadlockHandler.CheckDeadlock(Tiles);
        }`

有人看到问题是什么吗?

multithreading unity3d async-await game-development
© www.soinside.com 2019 - 2024. All rights reserved.