纳金网

标题: Unity3d json 数据库 [打印本页]

作者: 烟雨    时间: 2015-9-29 00:52
标题: Unity3d json 数据库
转自: http://blog.csdn.net/fzhlee/article/details/8666950

新建BrowserHistoryForm.CS  

using UnityEngine;

using System.Collections;

using System;

using Bitverse.Unity.Gui;

using Newtonsoft.Json.Linq;

using System.Text;

public class BrowserHistoryForm : BitForm {

private string jsonURL=“http://XXXXXXXXXXXXXXXXXXXXXXX”;   //单条记录

private string jsonURLget = “http://XXXXXXXXXXXXXXXXXXXXXXX”; //查询多条记录

private string jsonURLsave = “http://XXXXXXXXXXXXXXXXXXXXXXX”; //保存单条记录

private string jsonURLdelete = “http://XXXXXXXXXXXXXXXXXXXXXXX”; //删除单条记录

public JArray shopcarArray;

public GameObject Group;

public GameObject prefab;

public ArrayList groupList = new ArrayList();//用来存储新产生的商品GameObject

public int _x = 0;

public int _y = 0;

public int _width = 300;

public int _height = 400; //全局变量不能写在函数里面。

public string goodsname ;

public string goodsprice ;

public string goodsid;

public string userid;

public void Start() {

StartCoroutine(DoGetMultitermData());

UpdateGrouplist(0);

}

public void OnGUI()

{

//~ if (_visible)

//~ {

BeforeOnGUI();

GUI.matrix = transform.localToWorldMatrix;

for (int i = 0, count = transform.childCount; i < count; i++)

{

Transform ch = transform.GetChild(i);

BitControl c = (BitControl)ch.GetComponent(typeof(BitControl));

c.Draw();

}

AfterOnGUI();

//~ }

}

protected virtual void BeforeOnGUI() { }

protected virtual void AfterOnGUI() {

if ((GameObject.Find(“BrowserHistoryWindow/Button”)。GetComponent(“BitButton”) as BitButton)。click) {

ClearGroup(“1”);

}

//最多显示20个商品

if (groupList.Count == 21) {

print(groupList.Count);

//DeleteGroup(20,“1”);

Transform ch = GameObject.Find(“BrowserHistoryWindow/ScrollView”)。transform.GetChild(0);

string goodsid = ch.name;

groupList.RemoveAt(20);

StartCoroutine(DeleteData(“1”,goodsid));

Destroy(ch.gameObject);

}

}

//获取单条记录

public IEnumerator DoGetSingleData(string id) {

//获取json数据的方法

WWW getwww = new WWW (jsonURL + id);

yield return getwww;

string jsonObj1 = getwww.data;    //单条json记录

JObject o = JObject.Parse(jsonObj1);

JArray sizes = (JArray)o[“commodity”];

goodsname = (string)sizes[0][“name”];

goodsprice = (string)sizes[0][“price”];

goodsid = id;

(GameObject.Find(“JoinCartForm/JoinCartWindow/TextArea1”)。GetComponent(“BitTextArea”) as BitTextArea)。Text = goodsname;

(GameObject.Find(“JoinCartForm/JoinCartWindow/TextField2”)。GetComponent(“BitTextField”) as BitTextField)。Text = goodsprice;

StartCoroutine(SaveData(“1”,goodsid));

}

//初始化时获取多条记录

public IEnumerator DoGetMultitermData(){

//获取json数据的方法

WWW getwww = new WWW (jsonURLget);

yield return getwww;

string jsonObjget = getwww.data;

if(jsonObjget != “”) {

JObject o = JObject.Parse(jsonObjget);

JArray sizes = (JArray)o[“browserhistory”];

shopcarArray = sizes;

for(int i = 0;i<shopcarArray.Count;i++){

string incartName = (string)shopcarArray[“name”];

string incartPrice = (string)shopcarArray[“price”];

string incartGoodsid = (string)shopcarArray[“commodity_id”];

string incartUserid = (string)shopcarArray[“user_id”];

GameObject Group = NewGroup(incartUserid,incartGoodsid,incartName,incartPrice);

groupList.Add(Group);

UpdateGrouplist(0);

BitControl Groupscript = (BitControl)Group.GetComponent(typeof(BitGroup));

GroupScript.Position = new Rect(_x,_y+80*i,_width,_height);

}

}

}

//保存记录

public IEnumerator SaveData(string userid,string id){

//提交JSON数据的方法

Hashtable mydata=new Hashtable();

mydata.Add(“user_id”,userid);

mydata.Add(“commodity_id”,id);

//将数据转换为json字符串

string jsonstring=HashTable2Json(mydata);

WWWForm form = new WWWForm();

form.AddField(“jsonstring”, jsonstring);

WWW postwww = new WWW(jsonURLsave, form);

yield return postwww;

print (postwww.data);

if(postwww.data==“success”){

AddGroup(userid,goodsid,goodsname,goodsprice);

}else{

}

}

//删除记录

public IEnumerator DeleteData(string userid,string goodsid) {

WWW getwww = new WWW (jsonURLdelete +“user_id=”+userid+“%20and%20commodity_id=”+goodsid);

yield return getwww;

}

public IEnumerator DeleteData(string userid) {

WWW getwww = new WWW (jsonURLdelete +“user_id=”+userid);

yield return getwww;

}

//~ 单条记录转换JSON数据格式

public static string HashTable2Json(Hashtable hashtable) {

if (hashtable.Count < 1 ){

return “{}”;

}

//初始化

StringBuilder sb = new StringBuilder();

sb.Append(‘{’);

foreach (System.Collections.DictionaryEntry objDE in hashtable) {

if (sb.Length > 1)

sb.Append(“,”);

sb.Append(“\”“ + objDE.Key.ToString() + ”\“:” + “\”“+objDE.Value.ToString()+ ”\“”);

}

sb.Append(‘}’);

return sb.ToString();

}

public void AddGroup(string userid,string goodsid ,string goodsname,string goodsprice) {

GameObject Group = NewGroup(userid,goodsid,goodsname,goodsprice);

groupList.Insert(0,Group);//在top处插入

UpdateGrouplist(0);

}

public GameObject NewGroup(string userid,string goodsid ,string goodsname,string goodsprice) {

GameObject Group;

Group = (GameObject)Instantiate(prefab);

Group.transform.parent = transform.Find(“BrowserHistoryWindow/ScrollView”);

Group.name = goodsid;

// Group.transform.Find(“GoodImages”)。GetComponent(BitDrawImage)。Image = goodsimage;

(Group.transform.Find(“GoodsName”)。GetComponent(typeof(BitLabel)) as BitLabel)。Text = goodsname;

(Group.transform.Find(“GoodsPrice”)。GetComponent(typeof(BitLabel)) as BitLabel)。Text = goodsprice;

(Group.transform.Find(“Close”)。GetComponent(“CloseButton”) as CloseButton)。goodsid = goodsid;

(Group.transform.Find(“Close”)。GetComponent(“CloseButton”) as CloseButton)。userid = userid;

return Group;

}

//清空

public void ClearGroup(string userid) {

groupList.Clear();

Transform parentView = GameObject.Find(“BrowserHistoryWindow/ScrollView”)。transform;

foreach (Transform bitgroup in parentView) {

Destroy(bitgroup.gameObject);

}

StartCoroutine(DeleteData(userid));

}

//遍历groupList并更新其坐标位置,以及设置相应的序号到其关闭按钮中

public void UpdateGrouplist(int startnum){

for(int k = startnum;k<groupList.Count;k++){   //用foreach效率极低!!!

//foreach(GameObject oneGroup in groupList) {

//(oneGroup.GetComponent(typeof(BitGroup)) as BitGroup)。Position = new Rect(_x,_y+80*(k++),_width,_height);

(((GameObject)groupList[k])。GetComponent(“BitGroup”) as BitGroup)。Position = new Rect(_x,_y+80*k,_width,_height);

(((GameObject)groupList[k])。transform.Find(“Close”)。GetComponent(“CloseButton”) as CloseButton)。listnum = k;

}

}

}





欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5