2015年04月14日

Unityで、保存データ全消しのデバッグ用ボタンを配置する


以前に『Unityでデータのセーブとロードを実装する』てのをやりました。
んで、そのデバッグで保存されたデータを消さなきゃいけないって時があると思います。
例えば、初めてアプリを起動したときに特定のメソッドを動かすとき、
きちんとデータが生成されているかを確認したい時とかですかね。

一応、Unityにはデータ消去用のコードがあります。それがこちら。

PlayerPrefs.DeleteAll();

これは『Unityでデータのセーブとロードを実装する』の時に使った、
PlayerPrefsの機能の一つでして、
こいつを使うと、現在PlayerPrefs.Set◯◯で保存されたデータが全部消えます。
もちろん、PlayerPrefsXで保存されたやつも全部消えます。

こいつを使って、以下の様なコードを仕込みました。
仕込んだシーンは冒頭のタイトル画面。
こいつを仕込むと、そのシーンの画面左上に、
デカいボタンが配置されます。

void OnGUI(){
  if (GUI.Button(new Rect(0,0,150,100),"reset")){
    //デバッグ用。保存データ初期化
    PlayerPrefs.DeleteAll();
    Debug.Log ("データ全消去したわよッ!!(・∀・)");
  }
}

これで、表示されたボタンを押してあげると、
その段階でPlayerPrefs、PlayerPrefsXを利用して保存されたデータは、全部消えます。
OnGUIやGUI.Buttonに関しては、別の機会に。

さてこのままだとちょっと瑣末な問題がありまして…(;・∀・)
このままビルドしてアプリとして仕上げてしまうと、
実際に実機で動かした時にも、このresetボタンが表示されてしまいます。

本番のビルドをする際にコメントアウトするとか色々手はあると思いますが、
作業に一手間加えるのは、失敗のモトだとおれは思ってまして。
それ以上にそういう一手間って思ったよりめんどくさくないですか?
おれはめんどくさいです。ものぐさですから(;・∀・)

というわけで、上記コードにさらに一手間加えたものがこちら。

#if UNITY_EDITOR //Unityエディタ上での稼働時のみ表示する
void OnGUI(){
  if (GUI.Button(new Rect(0,0,150,100),"reset")){
    //デバッグ用。保存データ初期化
    PlayerPrefs.DeleteAll();
    Debug.Log ("データ全消去したわよッ!!(・∀・)");
  }
}
#endif

こんな感じ。趣旨は若干ずれますが、ポイントはココ。

#if UNITY_EDITOR // Unityエディタ上での稼働時のみ表示する
#endif

これは、『Unity上で動かしてる時だけ表示してね☆』という命令でして、
このif文で挟んであげたやつは、Unityで動かしてる時のみ有効になります。
これで、実機で動かす場合は表示されなくなりました。
削除やコメントアウトを忘れても安心というわけです。

実機でのデバッグの際にデータを消したいときは、
これはもう、今では設定→アプリに行って、
そこでデータ全消しを選ぶのが常套手段ですね。

まぁ、アプリの機能としてデータ全消しを実装しちゃえば?
て話ではあるんですが…(;・∀・)

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)