ハイスコア処理で苦労した事!

ハイスコア処理で苦労した点。それは・・・

 

なぜかハイスコアが保存されない(デフォルト値のまま)

 

僕が最初にやっていた処理を見せる。

f:id:Free_Gamer:20180907181140p:plain

処理の内容としては・・・

・Boxコリジョンにプレイヤーがオーバーラップ。現在のステージのセーブデータが存在するかチェック。

f:id:Free_Gamer:20180907181454p:plain

・1回目のプレイはセーブデータが存在しないので、Falseへ。

f:id:Free_Gamer:20180907181422p:plain

・ゲームモードからスコア(タイム)を参照。CreatSaveGameObjectで新規セーブデータを作成し、変数に格納。

f:id:Free_Gamer:20180907181622p:plain

・ハイスコアにも格納。最後にセーブ。

f:id:Free_Gamer:20180907181702p:plain

 

・2回目以降のプレイ。Trueの処理。

f:id:Free_Gamer:20180907181804p:plain

・CreatSaveGameObjectで新規にセーブデータを作成。ゲームモードからスコア(タイム)を参照。変数に格納

f:id:Free_Gamer:20180907181622p:plain

・セーブデータをロード。

f:id:Free_Gamer:20180907182016p:plain

・ハイスコア判定。現在のクリアータイム(スコア)と前回のハイスコアを比較。

f:id:Free_Gamer:20180907200159p:plain

・ハイスコアならTrueへ行き、ハイスコアを上書き。ハイスコアじゃなければFalseへ。

f:id:Free_Gamer:20180907200301p:plain

 

 

 

さて、なぜ

 

なぜかハイスコアが保存されない(デフォルト値のまま)

 

↑のような問題が起きたのか。原因は、

 

 

ステージをクリアーする度、新規にセーブデータを作成していたから。

 

1回目のプレイで、CreatSaveGameObjectで新規に現在のステージのセーブデータを作成。

スコアが保存され、ハイスコアも保存される。

 

もう一度プレイした時、

f:id:Free_Gamer:20180907212752p:plain

またCreatSaveGameObjectで新規にセーブデータを作成しているのだ。

そうなると、前回ハイスコアに保存していた値がリセットされてしまう。

 

セーブデータを記録用紙に例えるなら・・・

 

1回目のプレイの記録用紙が

f:id:Free_Gamer:20180907213454p:plain

ぺらっと新しい記録用紙に変えられて記録されるようなもの。(分かりにくい絵かも・・・)

f:id:Free_Gamer:20180907213602p:plain

 

しかも2回目以降の処理は、

・現在クリアーした時のスコアを保存。

・前回のハイスコアと現在のクリアータイムを比較

 

という流れだ。

 

この時点で

ハイスコアには何も値(スコア)が格納されていない。

 

何故なら、前回のハイスコアの記録が先程の↓イラストのように無くなってしまっているからだ。

f:id:Free_Gamer:20180907213602p:plain

だからハイスコア配列はデフォルト値を返すしかないのだ。

 

ハイスコア配列のデフォルト値は「0」

「0秒」以下でクリアーなど出来るはずもないからどんなに早くクリアーしても一生ハイスコアという事にはならないのである。

 

自分なりに分かりやすく解説したつもりだがどうだっただろう・・・

 

何かの役に立てれば幸い。

 

それではまた!^^ノシ