侧边栏壁纸
博主头像
拾荒的小海螺博主等级

只有想不到的,没有做不到的

  • 累计撰写 140 篇文章
  • 累计创建 15 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录
WIN

Unity:WWW工具类的使用技巧

拾荒的小海螺
2024-04-26 / 0 评论 / 0 点赞 / 10 阅读 / 4668 字

1、简述

Unity的WWW类是一种用于发送HTTP请求和接收HTTP响应的类。它可以用来访问网络上的资源,如文本、图像、音频和视频等。本文将介绍如何使用Unity的WWW类来访问网络资源。

4A51C6F5-B9A9-4e8d-A8D7-B40AB0CD9F4E.png

2、创建一个简单的HTTP请求

首先,我们需要创建一个WWW对象来发送HTTP请求。以下是一个简单的示例代码,用来发送一个GET请求:

using UnityEngine;
using System.Collections;

public class SimpleHTTP : MonoBehaviour
{
    IEnumerator Start()
    {
        WWW www = new WWW("http://www.example.com");
        yield return www;
    
        if (www.error != null)
        {
            Debug.Log(www.error);
        }
        else
        {
            Debug.Log(www.text);
        }
    }
}

3、发送POST请求

如果要发送一个POST请求,我们需要使用WWWForm类来创建一个表单对象。以下是一个简单的示例代码,用来发送一个POST请求:

using UnityEngine;
using System.Collections;

public class SimpleHTTP : MonoBehaviour
{
    IEnumerator Start()
    {
        WWWForm form = new WWWForm();
        form.AddField("username", "user");
        form.AddField("password", "password");

        WWW www = new WWW("http://www.example.com/login", form);
        yield return www;

        if (www.error != null)
        {
            Debug.Log(www.error);
        }
        else
        {
            Debug.Log(www.text);
        }
    }
}

4、发送带有请求头的请求

如果要发送一个带有请求头的请求,我们需要使用WWW类的SetRequestHeader方法。以下是一个简单的示例代码,用来发送一个带有请求头的GET请求:

using UnityEngine;
using System.Collections;

public class SimpleHTTP : MonoBehaviour
{
    IEnumerator Start()
    {
        WWW www = new WWW("http://www.example.com");
        www.SetRequestHeader("Authorization", "Bearer token");
        yield return www;

        if (www.error != null)
        {
            Debug.Log(www.error);
        }
        else
        {
            Debug.Log(www.text);
        }
    }
}

5、加载本地贴图

如果要加载本地的图片转成Texture2D,我们可以通过在文件路径前面添加fille标签,来实现将当前图片转成texture:

public static IEnumerator LoadTexture(string filePath, Action<bool, Texture2D> callback)
{
    if (IsWindows && !filePath.StartsWith("file://"))
    {
        filePath = "file://" + filePath;
    }
    WWW www = new WWW(filePath);
    yield return www;
    if (string.IsNullOrEmpty(www.error))
    {
        callback.Invoke(true, www.texture);
    }
    else
    {
        Debug.LogError("WWW load Texture2D file Error: " + www.error + "   " + filePath);
        if (callback != null)
        {
            callback(false, null);
        }
    }
}

6、异步加载本地贴图

如果要加载本地的图片转成Texture2D,我们可以通过在文件路径前面添加fille标签,并且通过MoveNext来实现异步加载图片转成texture:

public static Texture2D LoadTextureSync(string filePath)
{
   if (IsWindows && !filePath.StartsWith("file://"))
   {
       filePath = "file://" + filePath;
   }
   using (WWW www = new WWW(filePath))
   {
       while (www.MoveNext()) { }

       if (string.IsNullOrEmpty(www.error))
       {
           return www.texture;
       }
       else
       {
           Debug.LogError("WWW load Texture2D file Error: " + www.error + "   " + filePath);
       }
   }
   return null;
}

7、总结

Unity的WWW类是一个非常强大的类,可以用来发送HTTP请求和接收HTTP响应。本文介绍了如何使用WWW类来发送GET和POST请求,以及如何发送带有请求头的请求。希望这些示例代码能够帮助你更好地理解Unity的WWW类的使用方法。

0

评论区