2014年11月27日

ゲームのアップグレード (32) | ゲームセンターアカウント毎のローカルストレージ

さて、リーダーボードのテストをしてる時に、同じデバイスでGameCenterのアカウントを入れ替えながら、リーダーボードにスコアを登録していってたんだけど、そこで問題が発覚!!

そうそう。ローカルストレージをデバイス単位にシェアしてるんで、アカウントを入れ替えても、全部のアカウントが同じローカルストレージにアクセスしちゃうんで、問題が起こるんですよね。
ログインボーナスが受け取れないとか、リーダーボードの登録情報が無くなるとか。

なんで、GameCenter のアカウント情報を元にして、ローカルストレージを振り分ける形にしてみたいと思いますね。


ユーザー情報を取ってくる
まずは自分の情報の取得から!
こんな感じのスクリプトで情報を取って来てるけど、少し事前条件が。
Screen Shot 2014-11-25 at 6.33.03 PM.png
前に GameCenter 機能を使う為に、Unity の Social 機能で、Social.localUser.Authenticate を使ってGameCenterアカウントを初期化してるけど、その終了を待ってから、上の InitProfile を呼ぶ形です。

そうすると、Social.localUser に情報が入ってるはずなんで、そこからパブリックIDとユーザーネームをGet!!
GameCenter にログインしてない時は、id も userName も空っぽなんで、そのときは "Guest" さんって形。


データをパブリックIDに紐付くストレージに保存
さて、ここはもう前にやったんで書くまでも無いかもなんだけど、データのセーブとロードね。
これまでは、ログインボーナス、基本データ、週間ランキングの3つの分かれたデータをそれぞれ直接 KeyValueStorage クラスに保存してたんだけど、これを変えて、この3つを一つの JSON データに纏めて、このデータをユーザーのパブリックidをキーワードとして、KeyValueStorageでローカルストレージに保存。
Screen Shot 2014-11-25 at 6.44.11 PM.png
そんな所かな?
これで、ローカルデータの分割は完了ね♪


※※ 注意 ※※
えーと、実は一部ストレージの分割できてないんですよね。
そう。Storeのインベントリーデータなんです。これ、SoomlaのStoreを使ってるんだけど、調べてみたけど、アカウント毎の分割って、ないんですよね。
ひとまずそのままにして、パワーアップアイテムは共通の入れ物に入れとく事にしますね。
ま、自前のストレージと併用して、ユーザーアカウントに紐付くストレージの初期ロード時にStoreストレージに値をコピー、持ってるアイテム数が変わる度に、ユーザーアカウントに紐付くストレージにセーブ、なんて事をやれば実現は可能なはずなんだけど、今はこのまんまでいきますわ。

じゃ、今回はこれで完結ね!!

        にほんブログ村 ゲームブログ×PlayNCBlogへ
 初めてみました。よかったらクリックお願いね ♪

こっちもあるよ
posted by やまけん at 14:05| Comment(0) | Unity | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: