美文网首页
Unity Http通信+MVC

Unity Http通信+MVC

作者: 玄策丶 | 来源:发表于2023-01-05 17:58 被阅读0次

1.M层

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ModelCloth : SingletonMono<ModelCloth>
{
    public ClothMsg data = new ClothMsg(); //布料查询数据
}
public class ClothMsg
{
    public List<ClothOne> listCloth = new List<ClothOne>(); //单个面料所有信息
}
public class ClothOne
{
    public string name;
    public string value;
}

2.C层
(1)接收数据

using LitJson;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using UnityEngine.Networking;
public class HttpGetMsgController_MLK : MonoBehaviour
{
    string strUrl_Cloth = "WebService.asmx/getmaterialbyid";
    private void Awake()
    {
        Instance = this;
    }
    /// <summary>
    /// 布匹信息接收,面料查询
    /// </summary>
    /// <returns></returns>
    public IEnumerator PostCloth(string id)
    {
        string url = AppConfig.HttpURL + strUrl_Cloth;

        JsonData data = new JsonData();
        data["key"] = AppConfig.Key;
        data["id"] = id;
        byte[] postBytes = System.Text.Encoding.Default.GetBytes(data.ToJson());

        UnityWebRequest request = new UnityWebRequest(url, "POST");

        request.uploadHandler = (UploadHandler)new UploadHandlerRaw(postBytes);
        request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
        request.SetRequestHeader("Content-Type", "application/json");
        yield return request.SendWebRequest();
        if (request.isNetworkError || request.isHttpError)
        {
            Debug.LogError(request.error);
        }
        else
        {
            //Debug.Log(request.downloadHandler.text);
            HttpGetMsgHandle_MLK.Instance.AllClothHandle(request.downloadHandler.text);
        }
    }
}

(2)处理数据

using LitJson;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class HttpGetMsgHandle_MLK : SingletonMono<HttpGetMsgHandle_MLK>
{
    /// <summary>
    /// 布匹信息处理
    /// </summary>
    /// <param name="str"></param>
    public void AllClothHandle(string str)
    {
        try
        {
            JsonData jsonData = JsonMapper.ToObject(str);
            if (jsonData.Count < 1)
            {
                return;
            }

            ModelCloth.Instance.data.listCloth.Clear();
            for (int i = 0; i < jsonData["data"].Count; i++)
            {
                ClothOne clothOne = new ClothOne();
                clothOne.name = EcpMsg(jsonData["data"][i]["name"]);
                clothOne.value = EcpMsg(jsonData["data"][i]["value"]);

                ModelCloth.Instance.data.listCloth.Add(clothOne);
            }
            //view显示 数据
            ViewCloth.Instance.SetClothMsg(ModelCloth.Instance.data);
        }
        catch (System.Exception ex)
        {
            Debug.Log(ex);
        }
    }


    /// <summary>
    /// 将string转换为int
    /// </summary>
    /// <param name="field"></param>
    /// <returns></returns>
    int TransformationToInt(string field)
    {
        int tempNum = 0;
        try
        {
            tempNum = int.Parse(field);
        }
        catch (Exception)
        {

        }
        return tempNum;
    }
    /// <summary>
    /// 将string转换为float
    /// </summary>
    /// <param name="field"></param>
    /// <returns></returns>
    float TransformationToFloat(string field)
    {
        float tempNum = 0f;
        try
        {
            tempNum = float.Parse(field);
        }
        catch (Exception)
        {

        }
        return tempNum;
    }
    /// <summary>
    /// 将json数据转换为string
    /// </summary>
    /// <param name="jsonData"></param>
    /// <returns></returns>
    string EcpMsg(JsonData jsonData)
    {
        try
        {
            if (jsonData == null)
            {
                return "";
            }
            else
            {
                return jsonData.ToString();
            }
        }
        catch (Exception)
        {
            return "";
        }
    }

    //判断是否含有某字段
    public bool CheckParam(JsonData Json, string KeyName)
    {
        bool res = false;
        //判断是否有key
        if (((IDictionary)Json).Contains(KeyName))
        {
            //string valuestr = (string)Json[KeyName];
            res = true;
        }

        return res;
    }
}

3.V层

/***********************
* 遇见你的眉眼,如清风明月。
* Title:        
* Date:         2021
* Author:       玄策
* UnityVersion: 2019.2.4f1
* Func:           
* -   
***********************/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ViewCloth : SingletonMono<ViewCloth>
{
    Transform Image_Cloth;

    public string str_ClothName; //面料按名字查询

    Text TextName;      //面料名称
    Text TextLocation;  //库位
    Text TextGH;        //缸号
    Text TextID;        //面料号
    Text TextUnit;      //单位
    Text TextMS;        //米数
    Text TextTXM;       //条形码
    Text TextDate;      //入库日期
    Text TextGYS;       //供应商
    Text TextCount;     //数量
    Text TextDWXS;      //单位系数
    Text TextFee;       //合计

    Button Btn_Search; //在库查询按钮

    private new void Awake()
    {
        Image_Cloth = GameObject.Find("Canvas").transform.Find("Image_Cloth");
        TextName = Image_Cloth.Find("TextName").GetComponent<Text>();
        TextLocation = Image_Cloth.Find("TextLocation").GetComponent<Text>();
        TextGH = Image_Cloth.Find("TextGH").GetComponent<Text>();
        TextID = Image_Cloth.Find("TextID").GetComponent<Text>();
        TextUnit = Image_Cloth.Find("TextUnit").GetComponent<Text>();
        TextMS = Image_Cloth.Find("TextMS").GetComponent<Text>();
        TextTXM = Image_Cloth.Find("TextTXM").GetComponent<Text>();
        TextDate = Image_Cloth.Find("TextDate").GetComponent<Text>();
        TextGYS = Image_Cloth.Find("TextGYS").GetComponent<Text>();
        TextCount = Image_Cloth.Find("TextCount").GetComponent<Text>();
        TextDWXS = Image_Cloth.Find("TextDWXS").GetComponent<Text>();
        TextFee = Image_Cloth.Find("TextFee").GetComponent<Text>();

        Btn_Search = Image_Cloth.Find("Button_Search").GetComponent<Button>();

    }
    void Start()
    {
        
        //在库查询按钮点击
        Btn_Search.onClick.AddListener(() =>
        {
            Image_Cloth.gameObject.SetActive(false);

            //调用网页端页面
            UIManager.Instance.browser.CallFunction("mlZkcx ", str_ClothName).Done();
            UIManager.Instance.ShowSearchMsg();
        });
    }

    public void SetClothMsg(ClothMsg msg)
    {
        TextName.text = msg.listCloth[0].name + ":";
        TextName.transform.Find("Text").GetComponent<Text>().text = msg.listCloth[0].value;

        TextLocation.text = msg.listCloth[2].name + ":";
        TextLocation.transform.Find("Text").GetComponent<Text>().text = msg.listCloth[2].value;

        TextGH.text = msg.listCloth[4].name + ":";
        TextGH.transform.Find("Text").GetComponent<Text>().text = msg.listCloth[4].value;

        TextID.text = msg.listCloth[6].name + " : ";
        TextID.transform.Find("Text").GetComponent<Text>().text = msg.listCloth[6].value;

        TextUnit.text = msg.listCloth[8].name + " : ";
        TextUnit.transform.Find("Text").GetComponent<Text>().text = msg.listCloth[8].value;

        TextMS.text = msg.listCloth[10].name + " : ";
        TextMS.transform.Find("Text").GetComponent<Text>().text = msg.listCloth[10].value;

        TextTXM.text = msg.listCloth[1].name + " : ";
        TextTXM.transform.Find("Text").GetComponent<Text>().text = msg.listCloth[1].value;

        TextDate.text = msg.listCloth[3].name + " : ";
        TextDate.transform.Find("Text").GetComponent<Text>().text = msg.listCloth[3].value;

        TextGYS.text = msg.listCloth[5].name + " : ";
        TextGYS.transform.Find("Text").GetComponent<Text>().text = msg.listCloth[5].value;

        TextCount.text = msg.listCloth[7].name + " : ";
        TextCount.transform.Find("Text").GetComponent<Text>().text = msg.listCloth[7].value;

        TextDWXS.text = msg.listCloth[9].name + " : ";
        TextDWXS.transform.Find("Text").GetComponent<Text>().text = msg.listCloth[9].value;

        TextFee.text = msg.listCloth[11].name + " : ";
        TextFee.transform.Find("Text").GetComponent<Text>().text = msg.listCloth[11].value;


        Image_Cloth.gameObject.SetActive(true);
        Image_Cloth.position = Input.mousePosition;
    }
}

4.Click

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HighlightPlus;
using UnityEngine.EventSystems;

public class ClothClick : MonoBehaviour
{
    public string cloth_ID; //布料id
    public string cloth_Name; //布料名字
    public string Cloth_ID { get => cloth_ID; set => cloth_ID = value; }
    public string Cloth_Name { get => cloth_Name; set => cloth_Name = value; }

    private void OnMouseUpAsButton()
    {
        if (ZheDang.Instance.CheckGuiRaycastObjects())
        {
            return;
        }
        if (EventSystem.current.IsPointerOverGameObject() == true)
        {
            return;
        }
        if (!LeftCamsChange.Instance.isMouse)
        {
            return;
        }
        if (AppConfig.ReadSelfMsg)
        {
            //测试
            ClothOne clothOne = new ClothOne();
            clothOne.name = "面料名称";
            clothOne.value = "YB-2342单面布";
            ClothOne clothOne1 = new ClothOne();
            clothOne1.name = "条形码";
            clothOne1.value = "200293";
            ClothOne clothOne2 = new ClothOne();
            clothOne2.name = "库   位";
            clothOne2.value = "A1-2";
            ClothOne clothOne3 = new ClothOne();
            clothOne3.name = "入库时间";
            clothOne3.value = "2021-01-14";
            ClothOne clothOne4 = new ClothOne();
            clothOne4.name = "缸   号";
            clothOne4.value = "Y191217017";
            ClothOne clothOne5 = new ClothOne();
            clothOne5.name = "供应商";
            clothOne5.value = "烟台业林";
            ClothOne clothOne6 = new ClothOne();
            clothOne6.name = "面料号";
            clothOne6.value = "YL005267ZGF-YH4#";
            ClothOne clothOne7 = new ClothOne();
            clothOne7.name = "数   量";
            clothOne7.value = "42.7000";
            ClothOne clothOne8 = new ClothOne();
            clothOne8.name = "单   位";
            clothOne8.value = "米";
            ClothOne clothOne9 = new ClothOne();
            clothOne9.name = "系   数";
            clothOne9.value = "1.0";
            ClothOne clothOne10 = new ClothOne();
            clothOne10.name = "米   数";
            clothOne10.value = "42.7";
            ClothOne clothOne11 = new ClothOne();
            clothOne11.name = "合   计";
            clothOne11.value = "42.7";

            ModelCloth.Instance.data.listCloth.Add(clothOne);
            ModelCloth.Instance.data.listCloth.Add(clothOne1);
            ModelCloth.Instance.data.listCloth.Add(clothOne2);
            ModelCloth.Instance.data.listCloth.Add(clothOne3);
            ModelCloth.Instance.data.listCloth.Add(clothOne4);
            ModelCloth.Instance.data.listCloth.Add(clothOne5);
            ModelCloth.Instance.data.listCloth.Add(clothOne6);
            ModelCloth.Instance.data.listCloth.Add(clothOne7);
            ModelCloth.Instance.data.listCloth.Add(clothOne8);
            ModelCloth.Instance.data.listCloth.Add(clothOne9);
            ModelCloth.Instance.data.listCloth.Add(clothOne10);
            ModelCloth.Instance.data.listCloth.Add(clothOne11);

            ViewCloth.Instance.SetClothMsg(ModelCloth.Instance.data);
        }
        else
        {
            //正式
            if (Cloth_Name.Equals(""))
            {
                ViewCloth.Instance.str_ClothName = "";
            }
            else
            {
                ViewCloth.Instance.str_ClothName = Cloth_Name;
            }
            
            StartCoroutine(HttpGetMsgController_MLK.Instance.PostCloth(Cloth_ID));
        }
    }
}

相关文章

网友评论

      本文标题:Unity Http通信+MVC

      本文链接:https://www.haomeiwen.com/subject/jsvctdtx.html