xcodeでゲームを作成しています。勝者は負のスコアまたは0になります。すべてうまくいったが、今では負のポイントを相手に追加したい。私はこのコードを使用しました:iMac while whileループがフリーズする
while (activePlayer.score < 0) {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
self.activePlayer.score += 1
self.activePlayer.scoreLabel.text = String (self.activePlayer.score)
self.notActivePlayer.score += 1
self.notActivePlayer.scoreLabel.text = String (self.notActivePlayer.score)
}
}
私は今この部分に来るとき、それはフリーズします。最悪のことは、私のiMac全体がフリーズすることです。非常に遅くなってきているので、シミュレータを閉じてスピードを戻すのに10分ほど待たなければなりません。
私の単純な結論は、このコードは間違っています。しかし、なぜ? 私は選手にスコアの変更を見せたいので、スコアに追加されたすべてのポイントの後にラベルテキストが更新されるのです。
SpriteKitのdispatch_xyzメソッドを使用することは、ゲームループとペアになっておらず、実行するポイントがわからないため、まだ時間関連のタスクにはあまり適していません。 SKActionsは行く1つの方法です。 – Whirlwind
@Whirlwindあなたは間違いなしです。私はスプライトキットがここで使用されていたことさえ気付かなかった。私はそれを明確にするために何かを追加しようとします。 – luk2302
@ luk2302ご協力いただきありがとうございます。私が期待していたのは、スコアが負の数である限り、1ポイントを加えて新しいスコアを表示し、(プレーヤーが変更を見ることができるように)しばらく待ってから、必要に応じて別のポイントを追加します。 私はあなたのコードを試しましたが、add 1 procesを一度だけ実行しました。 SKAction.waitの処理についても見ていきます。私はそれを試したが、目に見える待っている。私はドローイングボードに戻らなければならないでしょう。 – Delah