IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> unity WebRequst 便利的工具类 -> 正文阅读

[游戏开发]unity WebRequst 便利的工具类

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class WebRequestResult
{
    /// <summary>
    /// 0为请求成功 1位请求失败
    /// </summary>
    public int err = 0;

    public string errMsg = ""; 
    public DownloadHandler result ;
}


public class WebRequestManager : MonoBehaviour {

	// Use this for initialization
    private static WebRequestManager instance;
    public delegate void WebRequestResultListener(WebRequestResult request);
    public static Dictionary<string, WebRequestResultListener> msgListeners = new Dictionary<string, WebRequestResultListener>();
    public static WebRequestManager Instance
    {
        get
        {
            if (instance != null)
            {
                return instance;
            }
            return instance=new GameObject("WebRequestManager").AddComponent< WebRequestManager>();
        }
    }


    public void Post( WWWForm form,string url, string msgName,WebRequestResultListener webRequestResultListener)
    {
        StartCoroutine(WebPost(msgName,form, url, webRequestResultListener));
    }
    IEnumerator WebPost(string msgName,WWWForm form,string url, WebRequestResultListener webRequestResultListener)
    {
        WebRequestResult postResult=new WebRequestResult();
        //请求链接,并将form对象发送到远程服务器
        UnityWebRequest webRequest = UnityWebRequest.Post(url, form);
        AddMsgListener(msgName,webRequestResultListener);
        yield return webRequest.SendWebRequest();
        if (webRequest.isHttpError || webRequest.isNetworkError)
        {
            postResult.err = 1;
            postResult.errMsg = webRequest.error;
        }
        else
        {
            postResult.err = 0;
            postResult.result = webRequest.downloadHandler;
        }
        FireMsg(msgName, postResult);
        RemoveMsgListener(msgName,webRequestResultListener);
    }

    
    public void Get<T>(string msgName, string url, WebRequestResultListener webRequestResultListener) where T : DownloadHandler, new()
    {
        StartCoroutine(WebGet<T>(msgName, url,webRequestResultListener));
    }
    public IEnumerator WebGet<T>(string msgName, string url, WebRequestResultListener webRequestResultListener)where T : DownloadHandler, new() 
    {
        WebRequestResult getResult = new WebRequestResult();
        UnityWebRequest webRequest = UnityWebRequest.Get(url);
        AddMsgListener(msgName, webRequestResultListener);
        T handler = new T();
        webRequest.downloadHandler = handler;
        yield return webRequest.SendWebRequest();                               
        if (webRequest.isHttpError || webRequest.isNetworkError)                         
        {
            getResult.err = 1;
            getResult.errMsg = webRequest.error;
        }
        else //请求成功
        {
            getResult.err = 0;
            getResult.result = handler;
        }
        FireMsg(msgName, getResult);
        RemoveMsgListener(msgName, webRequestResultListener);
    }
    public void Get(string msgName, string url, WebRequestResultListener webRequestResultListener) 
    {
        StartCoroutine(WebGet(msgName, url, webRequestResultListener));
    }
    public IEnumerator WebGet(string msgName, string url, WebRequestResultListener webRequestResultListener) 
    {
        WebRequestResult getResult = new WebRequestResult();
        UnityWebRequest webRequest = UnityWebRequest.Get(url);
        AddMsgListener(msgName, webRequestResultListener);
        
        yield return webRequest.SendWebRequest();
        if (webRequest.isHttpError || webRequest.isNetworkError)
        {
            getResult.err = 1;
            getResult.errMsg = webRequest.error;
        }
        else //请求成功
        {
            getResult.err = 0;
            getResult.result = webRequest.downloadHandler;
        }
        FireMsg(msgName, getResult);
        RemoveMsgListener(msgName, webRequestResultListener);
    }

    public void AddMsgListener(string msgName, WebRequestResultListener listener)
    {
        if (msgListeners.ContainsKey(msgName))
        {
            msgListeners[msgName] += listener;
        }
        else
        {
            msgListeners[msgName] = listener;

        }
    }
    public void RemoveMsgListener(string msgName, WebRequestResultListener listener)
    {
        if (msgListeners.ContainsKey(msgName))
        {
            msgListeners[msgName] -= listener;
            if (msgListeners[msgName] == null)
                msgListeners.Remove(msgName);
        }
    }
    private void FireMsg(string msgName, WebRequestResult msgBase)
    {
        if (msgListeners.ContainsKey(msgName))
        {
            msgListeners[msgName](msgBase);
        }
    }
}

使用方式:

 WebRequestManager.Instance.Get("GetAdr", _url, (request =>
        {
            if (request.err == 0)
            {
                print("成功");
                
            }
            else
            {
                print(request.errMsg + "--请求失败 重新请求");
                
            }
        }));

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 16:02:57  更:2022-05-01 16:04:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:49:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码