unity 发布web GL读取MySQL数据库——小白版

工作需要,项目需要刷新读取sql数据,且unity需要发布webgl版本,但是unity在webgl的平台下无法支持直连MySql

所以想来很多的解决办法。

 socket连接,适用于多客户端,网上的资料大部分都是聊天室的,因此不予考虑。

在Java同事的帮助下,找到了正式的解决办法。

整个数据流如下:

unity——>javascript——>mysql

javaspcrit刷新读取sql数据,并以json的格式保存在页面上,unity用UnityWebRequest(WWW在2018版已弃用)读取json网页,获取下来的值,进行json解析,并赋值给dataset

json代码

[
    {"id":"37",
"rfid":null,
"material_id":"M000000001",
"type":"2",
"create_time":"2019-04-10 17:21:00",
"start_time":null,
"finish_time":null,
"is_start":"0",
"is_finish":"0",
"is_delete":"0",
},

    {"id":"38",
"rfid":null,
"material_id":"M000000002",
"type":"1",
"create_time":"2019-04-10 17:21:00",
"start_time":null,
"finish_time":null,
"is_start":"1",
"is_finish":"0",
"is_delete":"0",
}
]

unity UnityWebRequest访问代码

 string path = "http://192.168.1.100/Data.aspx";
    IEnumerator GetWebInfo()
    {
        UnityWebRequest webInfo = UnityWebRequest.Get(path);
            yield return webInfo.SendWebRequest();
        if (webInfo.isHttpError || webInfo.isNetworkError)
        {
            Debug.Log(webInfo.error);
            StopAllCoroutines();
            yield return null;
        }
        else
        {
            info = webInfo.downloadHandler.text;                     
            Debug.Log(webInfo.downloadHandler.text);
        }
    }

由于json数据是多层嵌套,所以用的是Newtonsoft来解析。引用using Newtonsoft.Json.Linq;

    public void InfoParsing() {

        //解析info
        JArray jar = JArray.Parse(info);
         Debug.Log(jar[jar.Count - 1]);
      
        //新建数据表的列名,与json值对应
        DataTable table = new DataTable("Info");
        DataColumnCollection columns = table.Columns;
        columns.Add("rfid", typeof(string));
        columns.Add("material_id", typeof(string));
        columns.Add("type", typeof(string));
        columns.Add("create_time", typeof(string));
        columns.Add("start_time", typeof(string));
        columns.Add("finish_time", typeof(string));
        columns.Add("is_start", typeof(string));
        columns.Add("is_finish", typeof(string));
        columns.Add("is_delete", typeof(string));

        //for循环依次解析{ …… }单元内容
        for (int i = 0; i < jar.Count; i++)
        {
            //解析每一个单元的值
            JObject obj = JObject.Parse(jar[i].ToString());
            Debug.Log(obj["material_id"]);
            
            //新建dataset行,并赋值
            DataRow infoRow = table.NewRow();
            infoRow["rfid"] = obj["rfid"];
            infoRow["material_id"] = obj["material_id"];
            infoRow["type"] = obj["type"];
            infoRow["create_time"] = obj["create_time"];
            infoRow["start_time"] = obj["start_time"];
            infoRow["finish_time"] = obj["finish_time"];
            infoRow["is_start"] = obj["is_start"];
            infoRow["is_finish"] = obj["is_finish"];
            infoRow["is_delete"] = obj["is_delete"];

            table.Rows.Add(infoRow);

        }
        //将存储完成的表Add到table中
        infoData.Tables.Add(table);
        Debug.Log(infoData.Tables["Info"].Rows.Count);

        Debug.Log(infoData.Tables["Info"].Rows[0][3]);

        WebText.text = infoData.Tables["Info"].Rows[0][3].ToString();
    }

至此,所有的值都在 infoData.Tables["Info"] 中,可以正常使用。

转载于:https://www.cnblogs.com/Small-Transparent/p/11231193.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值