亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

UnityWebRequest前后端交互的實現方法

發布時間:2020-06-29 16:13:06 來源:億速云 閱讀:641 作者:清晨 欄目:開發技術

這篇文章將為大家詳細講解有關UnityWebRequest前后端交互的實現方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一、技術概述

1、描述這個技術是做什么?

是Unity一套網絡工具庫,用于進行Http請求

2、學習該技術的原因?

項目需要,防止使用C#原生的網絡庫,加快開發速度

3、技術的難點在哪里

Unity僅提供了基礎的功能,如何把這些功能構造成一個能夠穩定業務開發的流程是一個比較難處理的問題

二、技術詳情

描述你是如何實現和使用該技術的,要求配合代碼和流程圖詳細描述。

HttpCenter類:封裝Get、Post、Put、Delete,維護一個請求隊列

///Get方法例舉
private IEnumerator StartGet(HttpRequest request)
    {
      var url = request.Url + "?";
      //反射用來填充Url
      Type type = Type.GetType(request.MsgName);
      var Msg = Convert.ChangeType(request.Msg, type);
      PropertyInfo[] properties = Msg.GetType().GetProperties();
      for (int i = 0; i < properties.Length; i++)
      {
        url += $"{properties[i].Name}={properties[i].GetValue(Msg)}";
        if (i != properties.Length - 1)
          url += "&";
      }
      request.Url = url;
      using (UnityWebRequest www = UnityWebRequest.Get(request.Url))
      {
        www.certificateHandler = new AcceptAllCertificatesSignedWithASpecificKeyPublicKey();
        www.downloadHandler = new DownloadHandlerBuffer();
        www.SetRequestHeader("Content-Type", "application/json");
        www.SetRequestHeader("token", token);
        yield return www.SendWebRequest();
        DealResult(www, request);
      }

工程中如何使用:封裝請求、數據,注冊委托,調用委托并添加回調

  //部分封裝
  public Action<LoginMsg, Action<HttpResponds>> NetLogin;
  public class LoginMsg : BaseMsg
  {
  public LoginMsg(string username, string password)
  {
    this.username = username;
    this.password = password;
  }
  public string username { get; set; }
  public string password { get; set; }
  }
  public class HttpResponds
  {
    public string data;
    public RespondsResult Result;
    public string token;
  }
  //注冊委托
  AddListener(ref MsgManager.Instance.NetMsgCenter.NetLogin, Method.Post, "User/login");
  private void AddListener<T>(ref Action<T,Action<HttpResponds>> registerEvent,Method methodType,string url) where T:BaseMsg
  {
    registerEvent += (request, callback) =>
    {
      HttpRequest httpRequest = new HttpRequest()
      {
        Msg = request,
        HttpMethod = Method.Post,
        Url = HttpCenter.path + url,
        Handler = (responds) =>
        {
          if (responds.Result == RespondsResult.Succ)
          {
            try
            {
              callback(responds);
            }
            catch(Exception ex)
            {
              
              Debug.Log("窗口已銷毀");
              if(nowScene == 0)
              {
                SceneManager.LoadScene(1);
              }
              else
              {
                SceneManager.LoadScene(0);
              }
            }
          }
        }
      };
      HttpCenter.Instance.Send(httpRequest);
    };
  }
  ///調用,添加回調
  MsgManager.Instance.NetMsgCenter.NetLogin(msg, (responds) =>
       {
         HttpCenter.Instance.token = responds.token;
         GetUserMsg userMsg = new GetUserMsg(accountField.text);
         MsgManager.Instance.NetMsgCenter.NetGetUser(userMsg, (getUserResponds) =>
         {
           NetDataManager.Instance.user = JsonHelper.DeserializeObject<User>(getUserResponds.data);
           UIMgr.Instance.CreateFrame("PersonalFrame");
         });
       });

三、技術使用中遇到的問題和解決過程

關于WebRequest中有個奇怪的問題,至今未搞懂,但是有暫時的解決方法。問題是Post方法直接設置失效,需要先聲明為Put,之后再www.method = UnityWebRequest.kHttpVerbPOST;


主要是基于UnityWebRequest做了一些封裝、利用反射、委托等特性來實現一些基本的功能

關于UnityWebRequest前后端交互的實現方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

榆社县| 江门市| 明光市| 柳江县| 黄石市| 高台县| 如东县| 莱芜市| 右玉县| 治多县| 乐陵市| 日土县| 抚松县| 遂昌县| 巴楚县| 金华市| 潼关县| 马鞍山市| 灌南县| 万全县| 大英县| 永州市| 靖安县| 中方县| 运城市| 固安县| 长汀县| 曲麻莱县| 安丘市| 左云县| 资兴市| 桑日县| 龙门县| 莱芜市| 平原县| 威海市| 彭泽县| 定襄县| 绵阳市| 罗山县| 阿勒泰市|