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;

});
相关推荐
垂葛酒肝汤16 小时前
Unity的UI扫光效果Shader
ui·unity·游戏引擎
mxwin19 小时前
Unity Shader Alpha测试 · 模板测试 · 深度测试
unity·游戏引擎
2601_956002811 天前
冬日狂想曲(赠去马赛克补丁)2026.5.13最新版免费下载 转存后自动更新 (看到请立即转存 资源随时失效)pc手机版通用
智能手机·游戏引擎·电脑·游戏程序·动画·游戏美术
Sator11 天前
unity解决粒子与物体接触时的硬边缘问题
unity·游戏引擎
RPGMZ1 天前
RPGMZ NPC头顶自动显示一段消息
前端·游戏引擎·rpgmz·rpgmakermz
程序员JerrySUN1 天前
Jetson边缘嵌入式实战课程第三讲:L4T 与 Jetson 系统架构
linux·服务器·人工智能·安全·unity·系统架构·游戏引擎
萌萌的提莫队长1 天前
Unity HDRP 渲染管线 Camera 输出到RenderTexture没有Alpha通道
unity·游戏引擎
winlife_1 天前
Unity Editor 工具不该用反射写组件字段:SerializedObject 在 4 个场景里非用不可
unity·自动化·游戏引擎
星河耀银海1 天前
Unity C#入门:变量的定义与访问权限(public/private)
unity·c#·lucene
郝学胜-神的一滴1 天前
中级OpenGL教程 005:为球体&平面注入法线灵魂
c++·unity·图形渲染·three.js·opengl·unreal