

ニフティクラウドモバイルバックグラウンドとUnityです。

固有のIDを使って得点を記録します。  
既に得点がある場合には問題ないのですが  
初回の処理「そのIDが無かった場合」の処理がうまくいきません

例  
太郎 10点  
花子 8点

ここに太郎を11点で上書きするのは平気ですが  
「三郎 9点」 を足そうとするとエラーになります。

追加したい処理は 「IDが既存になかった場合にそのIDで新しく登録を行う」です。

または 「IDで検索を行い、それがあるか否かを返す」関数が知りたいです。  
サンプルを参考に書いた次のコードですが条件が「エラーがなかった」であり  
「検索結果があっか」になっていないのが問題だと思うからです。

[code]

        /// <summary>
        /// NCMBへスコアを記録 スコア(float) ゲーム名
        /// </summary>
    public static void saveScore(float score,string game){
        Debug.Log ("score:"+score+",game:"+game);
        string id = PlayerPrefs.GetString (RegisterID.UID, "");//固有のIDを呼び出す
        NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> (game);
        query.WhereEqualTo ("id",id);//id をキーに検索
        query.FindAsync ((List<NCMBObject> objList ,NCMBException e) => {
            //検索成功したら   
            if (e == null) {
                Debug.Log ("検索OK");
                objList[0]["Score"] = score;
                objList[0].SaveAsync();
            }else{
            //検索結果がない場合、次のログを吐き出さずにエラーになる               Debug.Log("saveScore:err");
                NCMBObject obj = new NCMBObject(game);
                obj["id"]  = PlayerPrefs.GetString(RegisterID.UID,"");
                obj["Name"]  = PlayerPrefs.GetString(RegisterID.NAME,"");
                obj["Score"] = score;
                obj.SaveAsync();
            }
        });
    }
    
[/code]


CC BY-SA 3.0
2016-03-14T00:50:10.457
23102
2016-04-13T02:56:23.093
13945
question
unity3d
NCMB　の検索：IDで検索を行い、それがあるか否かを返す関数は？


<http://mb.cloud.nifty.com/doc/current/tutorial/unity_highscore.html>

実際に試していないので合っているか分かりませんが  
上記ドキュメントを見る限り`FindAsync`の結果を`e == null`チェックした後、  
`objList.Count==0`で未登録を確認できるようです。


CC BY-SA 3.0
2016-03-14T01:26:21.927
23104
2016-03-14T01:26:21.927
4850
23102
answer