「授業用」カテゴリーアーカイブ

PrefabのToggleをGetする

いそいでいるのでスクリプトのみ

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

}

 

NCMBのオブジェクトデータをJSONで読みこむとか

標準の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());

 

Jsonデータを作成する

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

}

 

Unityで作成した子オブジェクトを削除

子化したPrefabを削除します

ボタン用のスクリプトで使用しています

	public void resutPanelClose(){//パネルクローズ時に作成したprefabを削除する
		resultPanelObj.SetActive(false);
		foreach ( Transform n in resultContent)
		{
			GameObject.Destroy(n.gameObject);
		}
	}

 

NCMB データストアの検索結果が空なのにエラーが出ないで問題になる件

ユーザ名でデータストア検索しても,ユーザ名に紐付いてるデータがないときの処理など.(あまりつかわないかもしれないけど,)

エラー出ずに,スルーして,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 ユーザ情報の任意のフィールド値を呼び出す

NCMBの会員情報にuserTypeというプロパティでは呼び出せない値があり,それを呼び出したいとき

NCMBUser currentUser = NCMBUser.CurrentUser;//現在のユーザ情報をcurrentUserに格納
string myUserType = currentUser["userType"].ToString();
PlayerPrefs.SetString("userType", myUserType);//userTypeをPlayerprefsの_userTypeに格納

いや,これで良かったなんて,,半日くらいなやんでたのに,,

 

NCMBでログインしたユーザ名で出てくるデータのObj.IDを検索する

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

	}