我正在尝试使用任务来检测我的 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);
}`
有人看到问题是什么吗?