今回の課題
ゲームに限らずですが、大抵のアプリケーションであれば「アプリを落としても保持し続けたい情報」というものがあります。
落としたら全ての情報をキレイさっぱり忘れてしまう。
楽しかった日々、喜びも悲しみも共有したあの日さえも…。そんなのってないよ!
そこで「変数の保存/永続化」です。
忘れたくない情報を端末(あるいは外部)に保存できれば、思い出せるはず、人間の心さえ残っていれば…ッ!
(このノリ疲れるな…)
下準備、下調べ
cocos2d-xで、変数を永続化する方法はいくつかあるようです。
- プリファレンス
- Dictionary
- SQLite
- ネットワークを通じて外部
下二つはそれ単体で記事が書けそうなので、今回は上二つを試してみる事にします。
プリファレンス
プリファレンスとは?
端末内部にキーバリュー形式で保存されるデータのことを「プリファレンスデータ」と言うらしいよ。
書き込み
読み込み
Dictionary
Dictionaryとは?
直訳では「辞書」でしょうか…?
たしかに、何かしらのデータを出し入れできるようなイメージがあります。
リファレンスを見るに、どうやらファイルベース(plist形式)で保存されるようです。
まあ、ぶっちゃけると、plist形式がどういう形式なのか分かっていないんですがね!
書き込み
制限
どうやらcocos2d::String
、cocos2d::Array
、cocos2d::Dictionary
の3種類のデータのみしか扱えないらしいよ。
本当だろうか!
本当だった。
読み込み
今回のまとめ
さくっと使えるという意味では、UserDefault
の方は本当に使いやすそうでした。
ただ、構造的なデータを持つのは不向きそうなので、構造化されたデータを持ちたい場合はDictionary
一択ということになるのではないでしょうか。
その際、素のままのDictionary
ではちょーっと色々面倒だなーと感じる部分が多いですので、何かしらを一枚噛んで使うのがよいかもしれません。
イチイチcocos2d::String::create
するのも面倒ですので…。(ccsという短縮系があるといえども!)
次回に向けて
次回は「ローカルストレージにファイルを保存」という事をやってみたいと思います。
ソースコード
https://github.com/8823-scholar/cocos2d-x-study/commit/78391bf9562c4776e0b06c26e9c1ae103892e456