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);
// }
}
});
}