Unity UnityWebRequest 没有返回值
Unity UnityWebRequest is not returning a value
我有一些代码可以从数据库中获取一些数据。在我的游戏中使用。
我已经设置了一个协同程序来统一使用 WWW 框架获取这些数据。
但是当我 运行 我的代码时,数据永远不会记录在我的 yield return 函数中。为什么会这样?请参阅下面的代码以了解不起作用的点:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class Main : MonoBehaviour {
void Start () {
Debug.Log("run ma routine");
StartCoroutine(GetText("http://localhost/artez/praktijk_opdracht/interface_v4/app/php/get_fashion.php", (result) =>{
Debug.Log(result); // this log function is never logging a value.. Why is this?
}));
}
void Update ()
{
}
IEnumerator GetText(string url, Action<string> result) {
UnityWebRequest www = UnityWebRequest.Get(url);
yield return www.SendWebRequest();
if(www.isNetworkError || www.isHttpError) {
Debug.Log(www.error);
}
else {
Debug.Log(www.downloadHandler.data); // this log is returning the requested data.
}
}
}
我想要的是 StartCoroutine()
来记录数据,而不是 IEnumerator()
内部的 debug.log
如果需要更多解释,我很乐意提供。
在 GetText
函数内完成 UnityWebRequest
请求后,您必须调用结果 Action
:
if (result != null)
result(www.downloadHandler.text);
新的GetText
函数:
IEnumerator GetText(string url, Action<string> result)
{
UnityWebRequest www = UnityWebRequest.Get(url);
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
if (result != null)
result(www.error);
}
else
{
Debug.Log(www.downloadHandler.data); // this log is returning the requested data.
if (result != null)
result(www.downloadHandler.text);
}
}
我有一些代码可以从数据库中获取一些数据。在我的游戏中使用。 我已经设置了一个协同程序来统一使用 WWW 框架获取这些数据。 但是当我 运行 我的代码时,数据永远不会记录在我的 yield return 函数中。为什么会这样?请参阅下面的代码以了解不起作用的点:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class Main : MonoBehaviour {
void Start () {
Debug.Log("run ma routine");
StartCoroutine(GetText("http://localhost/artez/praktijk_opdracht/interface_v4/app/php/get_fashion.php", (result) =>{
Debug.Log(result); // this log function is never logging a value.. Why is this?
}));
}
void Update ()
{
}
IEnumerator GetText(string url, Action<string> result) {
UnityWebRequest www = UnityWebRequest.Get(url);
yield return www.SendWebRequest();
if(www.isNetworkError || www.isHttpError) {
Debug.Log(www.error);
}
else {
Debug.Log(www.downloadHandler.data); // this log is returning the requested data.
}
}
}
我想要的是 StartCoroutine()
来记录数据,而不是 IEnumerator()
debug.log
如果需要更多解释,我很乐意提供。
在 GetText
函数内完成 UnityWebRequest
请求后,您必须调用结果 Action
:
if (result != null)
result(www.downloadHandler.text);
新的GetText
函数:
IEnumerator GetText(string url, Action<string> result)
{
UnityWebRequest www = UnityWebRequest.Get(url);
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
if (result != null)
result(www.error);
}
else
{
Debug.Log(www.downloadHandler.data); // this log is returning the requested data.
if (result != null)
result(www.downloadHandler.text);
}
}