【发布时间】:2014-04-11 18:04:19
【问题描述】:
我正在编写桌面游戏“Get Bit!”。首先我创建了一个控制台版本,现在我正在尝试将其移植到 Unity。
我的问题:
在控制台中,整个游戏是线性的。所以 PlayCards() 询问玩家他想玩什么牌,然后等待用户输入它的值。
在统一中,我试图通过按钮获取输入,但这不会等待用户输入并继续使用 MoveSwimmer() 等等。我试图通过 while(inupt == -1) 获取值,但这冻结了整个游戏。 目前 Run() 方法在一个 Game 类中:MonoBehaviour 附加到相机。
这是有问题的函数的代码在听取 McAden 的建议后:
void Game::Update ()
{
this.GameRun = true;
Debug.Log(string.Format("Round: {0}", (round - 1)));
Debug.Log("POSITION: " + PlayerPositionString());
while (GameRun)
{
PlayCards();
MoveSwimmers();
GetBit();
EndTurn();
}
Debug.Log(string.Format("Congrats! Player {0} won!", playerPosition.First()));
}
private void Game::PlayCards()
{
for (int i = 0; i < playerScripts.Count; i++)
{
if (playerScripts [i].IsAlive())
cardsPlayed.Add(playerScripts [i].PlaceCard());
}
}
override public Card Player::PlaceCard()
{
// a MonoBehaviour that shows for each card a Button that sets the value member ChoosenCardValue (on default -1).
GUICardChooser chooser = Camera.main.GetComponent<GUICardChooser>();
while (chooser.ChoosenCardValue == -1)
;
int cardIndex = cards.FindIndex(c => c.Value == chooser.ChoosenCardValue);
Card theChoosenOne = cards [cardIndex];
cards.RemoveAt(cardIndex);
return theChoosenOne;
}
我是否专注于错误的模式?我该如何解决这个问题?
感谢您的帮助。
【问题讨论】:
-
这个问题没有结束真是太可笑了。
标签: c# design-patterns unity3d game-engine