miniJSONのとき,指定したKey があるかどうか,無くてもnullは返ってこない.
のでjsondictionary.ContainsKey(keyname)でBoolで結果がでる
jsonDict.ContainsKey (objName);
miniJSONのとき,指定したKey があるかどうか,無くてもnullは返ってこない.
のでjsondictionary.ContainsKey(keyname)でBoolで結果がでる
jsonDict.ContainsKey (objName);
いそいでいるのでスクリプトのみ
using UnityEngine; using System.Collections; using UnityEngine.UI; public class prefabinfoSend : MonoBehaviour { Toggle mytoggle; // Use this for initialization void Start () { GameObject toggleObj = transform.FindChild("Toggledesu").gameObject; mytoggle = toggleObj.GetComponent<Toggle> (); } // Update is called once per frame void Update () { } public void pressed(){ string objName = this.name; //Toggle mytoggle = this.GetComponent<Toggle> (); // mytoggle.isOn; Debug.Log (objName); Debug.Log (mytoggle.isOn); } }
標準のJSONが使えないので,miniJSONを使用
PluginsフォルダにminiJSONをDLし,コードの頭に
using MiniJSON;//use miniJSON
が必要.
ん?jsonかんけいない?
using MiniJSON;//use miniJSON ///もろもろのプログラム var jsonDict = obj["skill1100"] as Dictionary<string,object>; int kazu = jsonDict.Count;//JSONの長さを測る Debug.Log(jsonDict["1102"].ToString());
Androidビルドできるけどインストール時に解析エラーがでるので,NCMBのSDK2.0に戻したら,NCMBFile機能は2.2.0からでした!
困った
とりあえずアプリ内におれておく
SDK更新履歴はここ
Jsonデータをむりくり作成
using UnityEngine; using System.Collections; public class jsontest : MonoBehaviour { // Use this for initialization public string playerName; public int lives; public float health; public string SaveToString(){ playerName = "cat"; lives = 10; health = 9.9f; return JsonUtility.ToJson(this); //Debug.Log (myjson); } void Start(){ var myjsondata = SaveToString (); Debug.Log (myjsondata); } }
子化したPrefabを削除します
ボタン用のスクリプトで使用しています
public void resutPanelClose(){//パネルクローズ時に作成したprefabを削除する resultPanelObj.SetActive(false); foreach ( Transform n in resultContent) { GameObject.Destroy(n.gameObject); } }
ユーザ名でデータストア検索しても,ユーザ名に紐付いてるデータがないときの処理など.(あまりつかわないかもしれないけど,)
エラー出ずに,スルーして,Listがゼロのまま読み取るので最終的にエラーでる.
Listの長さを計測してゼロのときにエラーと判定させるという方法で回避
bool checker = false; string useinfoStr = PlayerPrefs.GetString ("userName");//get username from playerprefs NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("usetInfo"); Debug.Log ("user" + useinfoStr); query.WhereEqualTo ("playerName", useinfoStr); query.FindAsync ((List<NCMBObject> objList ,NCMBException e) => {//moto if (e != null) { //検索失敗時の処理 //kokonihyouji alert1.SetActive(true); return; } else { if ( objList == null || objList.Count == 0 ){ alert1.SetActive(true); return; }else{ NCMBObject obj = objList[0]; PlayerPrefs.SetString("objID", obj.ObjectId); checker = true; } } });
の
if ( objList == null || objList.Count == 0 ){}
が肝
NCMBの会員情報にuserTypeというプロパティでは呼び出せない値があり,それを呼び出したいとき
NCMBUser currentUser = NCMBUser.CurrentUser;//現在のユーザ情報をcurrentUserに格納 string myUserType = currentUser["userType"].ToString(); PlayerPrefs.SetString("userType", myUserType);//userTypeをPlayerprefsの_userTypeに格納
いや,これで良かったなんて,,半日くらいなやんでたのに,,
Levelというキーには1が保存されていて,デバッグでそれを見ます
string myobjID = PlayerPrefs.GetString("objID"); NCMBObject testClass = new NCMBObject("usetInfo"); testClass.ObjectId = myobjID; testClass.FetchAsync (); System.Threading.Thread.Sleep(2000); Debug.Log( testClass["Level"] );
object IDがないとデータを取り出せないっぽい.
ログイン名でユーザ名を検索し,PlayerPrefsにセットし,
その名前で一致する(一致は完全一致みたい)データのリストをとりだし(でも1件しか入っていない),その1件目をobjに変換し,objのプロパティobjidを取り出す,,,めんどくさい
スクリプト
public void getUserInfo(){ string useinfoStr = PlayerPrefs.GetString ("userName");//get username from playerprefs NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("usetInfo"); //Scoreの値が7と一致するオブジェクト検索 query.WhereEqualTo ("playerName", useinfoStr); query.FindAsync ((List<NCMBObject> objList ,NCMBException e) => {//moto if (e != null) { //検索失敗時の処理 } else { NCMBObject obj = objList[0]; PlayerPrefs.SetString("objID", obj.ObjectId); // foreach (NCMBObject obj in objList) { //1件だけ出ると仮定して // Debug.Log ("objectId:" + obj.ObjectId); // } } }); }