unity 微信开发小游戏,网络资源获取数据

1.创建数据结构

cs 复制代码
public class JsCode
{
    public string js_code;
}

public class OpenID
{
    public string openid;
}

2.网络请求

cs 复制代码
using System;
using System.Collections;
using System.Text;
using UnityEngine;
using UnityEngine.Networking;

public class HttpManager : MonoBehaviour
{
    public static HttpManager instance;

    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
        }
        else
        {
            Destroy(this);
        }
    }

    /// <summary>
    /// 请求数据
    /// </summary>
    /// <typeparam name="Treq">请求数据类型</typeparam>
    /// <typeparam name="Tres">接收数据类型<</typeparam>
    /// <param name="url">请求地址</param>
    /// <param name="req">请求数据</param>
    /// <param name="callback">回显</param>
    public void GetData<Treq, Tres>(string url, Treq req, Action<Tres> callback) where Treq : class where Tres : class
    {
        StartCoroutine(LoadData<Treq, Tres>(url, req, callback));
    }
    /// <summary>
    /// 请求数据
    /// </summary>
    /// <typeparam name="Treq">请求数据类型</typeparam>
    /// <typeparam name="Tres">接收数据类型</typeparam>
    /// <param name="url">请求地址</param>
    /// <param name="req">请求数据</param>
    /// <param name="callback">回显</param>
    /// <returns></returns>
    IEnumerator LoadData<Treq, Tres>(string url, Treq req, Action<Tres> callback) where Treq : class where Tres : class
    {
        string json = JsonUtility.ToJson(req);
        //创建一个UnityWebRequest对象,这里以POST方法为例
        using (UnityWebRequest request = new UnityWebRequest(url, "POST"))
        {
            //创建一个UploadHandlerRaw对象,并设置内容类型

            Debug.Log("请求地址:" + url);
            Debug.Log("请求json:" + json);
            request.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(json));
            //为请求分配 DownloadHandlerBuffer,用于存储下载数据
            request.downloadHandler = new DownloadHandlerBuffer();
            //设置请求头
            request.SetRequestHeader("content-type", "application/json;charset=utf-8");
            //签名验证采用Bearer Token认证方式
            //request.SetRequestHeader("Authorization", "Bearer YOUR_ACCESS_TOKEN");
            //发送网络请求并等待完成
            yield return request.SendWebRequest();
            //网络有响应并且成功了
            if (request.isDone && request.result == UnityWebRequest.Result.Success)
            {
                Debug.Log("请求数据:" + request.downloadHandler.text);
                Tres res = JsonUtility.FromJson<Tres>(request.downloadHandler.text);
                callback?.Invoke(res);
            }
            else
            {
                Debug.Log("网络请求失败: " + request.error);
                callback?.Invoke(null);
            }

        }

    }


}

3.运用

cs 复制代码
//成功获取到用户Code
JsCode msg = new JsCode();
msg.js_code = e.code;

HttpManager.instance.GetData<JsCode, OpenID>(WXCodeUrl, msg, (res) => {
    Debug.Log("整体接收:" + res);
    Debug.Log("openid:" + res.openid);
    WXOpenID = res.openid;

});
相关推荐
HH‘HH12 小时前
Unity通过OPC UA工业协议连接工业设备实战指南
unity·游戏引擎
め.21 小时前
定点数运算库
算法·unity
点量云实时渲染-小芹1 天前
UE/Unity/Webgl模型在信创服务器上实时渲染推流的可行性分析
unity·webgl·云渲染信创·国产实时渲染·ue信创云推流
Duo1J1 天前
【UE】Slate 编辑器工具开发03 - 节点编辑器 (EdGraph)
ue5·编辑器·游戏引擎·ue4
郝学胜-神的一滴1 天前
[简化版 GAMES 104] 现代游戏引擎 02:拆解现代游戏引擎5+1层级架构,吃透引擎底层核心逻辑
c++·unity·架构·游戏引擎·图形渲染·unreal engine·系统设计
unityのkiven1 天前
Unity 中如何创建一片森林:享元模式能不能用?应该怎么用?
unity·游戏引擎·享元模式
LONGZETECH1 天前
新能源汽车充电设备装配与调试仿真教学软件 技术架构与核心实现解析
大数据·算法·3d·unity·架构·汽车
丁小未1 天前
Unity 几种常见合批手段的要求
游戏·unity·合批·srpbatcher·动态合批·静态合批
旧物有情2 天前
游戏开发常用架构 #MVP,MVC
游戏·unity·架构·mvc