我决定创建一个像游戏一样的小记忆,用unity3d学习游戏开发。
游戏应在玩家点击卡片后等待 2 秒,然后再将卡片翻转回来。
-statementyield return new WaitForSeconds(2)应该是完美的,但它的效果是没有执行函数的任何行。  
这是我的代码:
这将构建卡片网格(带有按钮)并在卡片被点击时调用一个函数来翻转卡片。
Card card = grid[i, j];
if (GUILayout.Button(new GUIContent((Texture) Resources.Load(card.getImg()), ""), GUILayout.Width(cardWidth))) {
  Debug.Log("Call FlipCard");
  FlipCardFaceUp(card);
  Debug.Log("Returned from FlipCard");
}
这是翻转功能:
System.Collections.IEnumerable FlipCardFaceUp(Card card) {
    Debug.Log("This isn't shown in the console");
    card.isFaceUp = true;
    if (!cardsFlipped.Contains(card)) {
        cardsFlipped.Add(card);
        if (cardsFlipped.Count >= 2) {
            playerCanClick = false;
            //Waiting 2 seconds before the cards are flipped back or are removed
            yield return new WaitForSeconds(2);
            if (cardsFlipped[0].id == cardsFlipped[1].id) {
                cardsFlipped[0].isMatched = true;
                cardsFlipped[1].isMatched = true;
            } else {
                cardsFlipped[0].isFaceUp = false;
                cardsFlipped[1].isFaceUp = false;
            }
            cardsFlipped.Clear();
            playerCanClick = true;
        } 
    }
}
这是控制台输出,当我测试我的游戏并单击一张卡片时:
Call FlipCard
Returned from FlipCard
如果我删除了 所需的东西,yield return一切正常(除了玩家看不到第二张牌,因为它会立即翻转回来)。  
我的收益回报有什么问题?