WWW class 不统一

WWW class does not work in unity

首先,我是 Unity 的新手,我正在使用新的 Unity 5.0.0 进行开发。我一直在查看 Unity 文档中的 WWW class 并按照它进行操作,但还没有让它工作。我查看了其他问题并在谷歌上搜索了很多,但无法正常工作。这是我在 APImanager 中得到的代码:

using UnityEngine; using System.Collections;

public class apiManager : MonoBehaviour

{

public string url = "URL";

 public string temp;

 public void Start(){
     WWW w = new WWW (url);
     StartCoroutine (WaitForRequest (w));

 }
 IEnumerator WaitForRequest(WWW w){
     yield return w;
     temp = w.text.ToString ();
 }
 public string getTemp(){
     return temp;
 }

}

在我的主文件中,我想调用字符串 getTemp 方法并在标签中显示数据,但它不起作用。什么都没有出现,我正在努力弄清楚。 (我试图将标签中的数据显示为文本(字符串)。)

public class main : MonoBehaviour {

apiManager myApiManager = new apiManager();

void OnGUI() {

GUI.Label(ScreenPosition(0, 500, 300,300), myApiManager.getTemp());

}
}

能否请您提供有关它应该如何工作的信息,或者我是否遗漏了什么?谢谢

问题是您在协程方法之外创建了 WWW 对象。在 WaitForRequest 中移动它:

    using UnityEngine; using System.Collections;

public class apiManager : MonoBehaviour

{

public string url = "URL";

 public string temp;

 public void Start(){
     StartCoroutine (WaitForRequest (w));
 }

 IEnumerator WaitForRequest(){
     WWW w = new WWW (url);
     yield return w;
     temp = w.text.ToString ();
 }
 public string getTemp(){
     return temp;
 }

}

此外,您不应该从 Main 单一行为中创建单一行为对象。而是将其定义为 public 属性 并在编辑器中分配它(您也可以在运行时使用 FindObjectOfType):

    public class main : MonoBehaviour {

public apiManager myApiManager; 

void OnGUI() {

GUI.Label(ScreenPosition(0, 500, 300,300), myApiManager.getTemp());

}
}