0

iDevice ゲームを開発しており、ローカル プレーヤーのスコアをデバイスに保存したいと考えています。ただし、ローカル プレーヤーは変更される場合があります。たとえば、家族が iPad を共有している場合、ゲームをプレイする前に個別に GameCenter にサインインすることができます。この問題を解決するために、キーがローカル プレーヤーによって決定され、値が GKScore オブジェクトの配列であるディクショナリとしてローカル スコアを格納することにしました。

最初は GKLocalPlayer の共有インスタンスをキーにしようと思ったのですが、NSCopying に準拠していないので、GKLocalPlayer は理想的なキー候補ではありません。私の 2 番目のアイデアは、ローカル プレーヤーの識別子を使用することでしたが、Apple は「プレーヤー識別子文字列の内容について推測しないでください。その形式と長さは変更される可能性があります」と述べています。当然のことながら、ある日魔法のようにプレーヤー ID が変更された場合、プレーヤーがローカル スコアを失うのではないかと心配しています。

私の最終的なアイデアは、ローカル プレイヤーのエイリアスを使用することでした。認証されていないローカル プレーヤーのエイリアス文字列が と等しいことを確認しましたnil[NSNull null]この場合、辞書のキーとして使用しても安全ですか? ローカル プレイヤーのエイリアスが一貫していると仮定しても安全ですか?

4

1 に答える 1

1

永続的であることが保証されているプレーヤーに関する唯一のことは、playerID文字列です。フォーマットと長さが変更される可能性があると書かれている場合、それは文字列のコンテキストを解釈しようとしている状況にあります。AFAIKは、特定のプレーヤーのIDが変更される可能性があるということではありませんが、Appleは将来別のスキームを使用してIDを生成する可能性があるため、特定の形式の文字列や文字列から派生する特定の情報に依存しないでください。

ただし、ドキュメントはそれが正しい方法であることについてかなり明確です。

Game Centerのすべてのプレーヤーアカウントには、一意のプレーヤーID文字列が永続的に割り当てられます。ゲームでは、この文字列を使用して、プレーヤーごとの情報を保存したり、プレーヤー間の曖昧さを解消したりする必要があります

于 2013-02-11T00:18:29.027 に答える