void HandleMatches() { //消除所有链后的hashset HashSet <Chain> chains = level.RemoveMatches(); //多次消除后需要这个来清除combo标记以及停止链结构的再次计算 if (chains.Count == 0) { StartNextTurn(); return; } boardController.AnimateMatchedAnimals(chains, () => { foreach (Chain chain in chains) { score += chain.score; } levelUIController.SetScoreLabelText(score.ToString()); //所有应该移动的item List <List <Animal> > columns = level.FillHoles(); //动画 boardController.AnimateFallingAnimals(columns, () => { //填满最上层的空缺 columns = level.TopAnimals(); //填满动画 boardController.AnimateNewAnimals(columns, () => { HandleMatches(); }); }); }); }