ゲームクリア後にスコアを更新させないようにする【Unity】

制作中のフルーツキャッチアプリが結構完成に近づいてきたところで、ゲームを何度も実行して不自然な点がないかチェックしていると、やはり発見しちゃいました。

それは、ゲームをクリアした後のスコアの処理に関する点です。さっそく修正していきましょう。

スポンサーリンク

クリア後にスコアを更新させないようにする

何が問題かというと、ゲームが終了すると合計スコアが画面の中心に表示されますよね。

得点の矛盾

しかし、上の画像を見ると右上の得点と合計の得点が矛盾していることが分かると思います。

どういった条件の時にこのような現象が起こるのか説明します。

制限時間が30秒で、0秒になるとフルーツの生成をストップしますが、30秒経過する直前に生成されたフルーツは、0秒になってもまだ落下処理を行い続けます。

0秒になった後に、残りのフルーツに触れた場合に、右上のスコアのみ更新されてしまいます。

Unityちゃんの操作は、0秒になり次第行えませんので、たまたま残りのフルーツの落下位置にUnityちゃんがいる場合このような現象が起きてしまうわけですね。

合計得点も更新すればいいんじゃないのかと思いがちですが、あくまでも制限時間を過ぎた後の得点になってしまうので、スコアは更新すべきではないと思います。

致命的なエラー等ではありませんが、やはり修正すべきでしょうね。

テキストスコアの更新を止める

テキストスコアが更新されないようにする

修正方法は非常に簡単です。

if文を使って、制限時間が0になるまでテキストスコアを更新するようにします。

これで、0秒になったらテキストスコアが更新されなくなりますが、スコア自体はフルーツに触れる度に更新され続けます。表面上110点に見えても内部的には120点といった事が起きるわけです。

最高スコアなどを保存したい場合は、スコアが更新される個所にも同じようにif文を使って0秒になるまではスコアを更新されるようにすれば良いと思います。

ユニティちゃんライセンス

この作品はユニティちゃんライセンス条項の元に提供されています。