先日、上記記事を参考にUnityroomでスマホ用ゲームを作って遊んでいた。
https://unityroom.com/games/trafficknightneo
2Dなアクションゲームで、クリアしたらスコアランキングが呼び出されて、ハイスコアのアップロードなどできるようにした。
ちょいちょい遊んでくれた人がいたようで、うれしく思っていたのだが、一位のスコアがおかしな値になっていた。
自分の想定では、スコアは1000~2000程度であるはずが、1位の人のスコアは9960ほどだった。
検証してみると、スマホで遊んでいる状態でゲームオーバーになってもスコアが初期化されず次のゲームに引き継がれてしまっていた。
困った理由としては、Unity上のエミュレートでは問題ない。PCブラウザで遊んでみても問題ない。しかしスマホだと変数が初期化されなかった。
public staticな変数に0を再代入してリセットとする処理だったのだが、なーぜか0がはいらねえ。
なんでじゃぁ!!!
まあスマホブラウザで動かすのは非推奨だからね。しょうがないね。
環境
Macbook pro 2020 Ventura
Unity 2020.3.18f1
Microsoft Visual Studio Community 2019 Version 16.11.15
スマホ・・・LG V60 ThinQ
対応
ゲームオーバーになったら別のシーンを挟む。
真っ黒背景にNowLoading・・・とだけUIテキストを置いて、そいつに「1秒後元のシーンに飛ぶ処理」をStart()に記述したスクリプトをアタッチ。あとは空っぽ。
とりあえずこれで変数が初期化されるようになった。
理由は知らん。動けばOK。センキューUnity。センキューUnityroom。