📅  最后修改于: 2023-12-03 14:51:45.900000             🧑  作者: Mango
在 Unity 中下载 OneDrive 上的文件可以让我们在开发过程中更有效地管理资料。在这里,我们将介绍在 Unity 中如何使用 C# 从 OneDrive 下载文件。
我们需要在 Unity 中安装一个用于进行 HTTP 请求的库。在这里,我们将使用 UnityWebRequest。这是 Unity 内置的一个插件,可以用来进行 HTTP 请求和下载。
如果您尚未注册 Azure 应用程序,请遵循下列步骤:
转到 Azure 门户。
单击“Azure Active Directory”>“应用注册”>“新注册”。
现在,添加以下详细信息:
http://localhost
。此重定向 URI 在创建应用程序时是必需的,但在开发期间不需要更改。在完成这些详细信息的填写后,请单击“注册”按钮。此时,您将被重定向到您的应用程序细节页。
现在,复制“应用程序(客户端)ID”并将其保存在一个安全的地方。我们稍后将在代码中使用它。
接下来,我们将授权控制设置为访问 OneDrive 文件。遵循下列步骤进行操作:
单击“配置”>“管理授权”。
在“授权类型”下拉列表中,选择“账户类型+所有 Microsoft Graph 权限”。
在“API 权限”下,添加 Microsoft Graph。单击“添加权限”>“Microsoft Graph”>“Delegated permissions”>“Files.Read.All”。
现在,我们已经授权了 OneDrive 上的文件。
我们在 Unity 中打开新场景并在空场景中创建一个 GameObject。此时,为 GameObject 添加脚本并以以下方式编写它。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class DownloadFile : MonoBehaviour
{
void Start()
{
StartCoroutine(DownloadFromOneDrive());
}
IEnumerator DownloadFromOneDrive()
{
string url = "https://graph.microsoft.com/v1.0/drive/items/{item-id}/content"; // 此处的 {item-id} 是从 OneDrive 文件 URL 中获取的
UnityWebRequest request = UnityWebRequest.Get(url);
request.SetRequestHeader("Authorization", "Bearer " + "[ACCESS TOKEN]"); // 此处的 [ACCESS TOKEN] 是从 Azure 应用中获取的
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
{
Debug.LogError(request.error);
yield break;
}
byte[] bytes = request.downloadHandler.data;
System.IO.File.WriteAllBytes(Application.dataPath + "/downloadedFile", bytes); // 此处为要下载的文件名及其位置
}
}
在此代码中,我们首先进行了请求,用的是 OneDrive 文件 URL,其中“item-id”是文件的唯一标识符。接下来,我们设置请求标头以使用 Azure 应用程序的访问令牌进行授权。最后,我们将下载的字节数组写入目标文件。在此代码中,我们在场景中创建了一个 GameObject 并将此脚本添加到其中。
现在,我们已经为 Unity 中的 OneDrive 下载准备好了所有内容。
在本指南中,我们介绍了如何使用 C# 和 UnityWebRequest 在 Unity 中从 OneDrive 上下载文件。
我们首先安装了必要的请求库,并注册了 Azure 应用程序。接下来,我们授权了该应用程序对 OneDrive 上的文件进行访问。最后,我们添加了 C# 脚本以实现文件下载。