WWW课程不统一

时间:2015-04-14 19:06:26

标签: c# android http web unity3d

首先,我是Unity新手,我正在开发新的Unity 5.0.0。我一直在查看Unity文档中的WWW类,并且已经完成了它并且还没有让它工作。我已经查看了其他问题,并搜索了很多内容,无法让它发挥作用。这是我在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());

}
}

您能否向我提供有关它应该如何工作或我是否错过了什么的信息?感谢。

1 个答案:

答案 0 :(得分:1)

问题是您正在协程方法之外创建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;
 }

}

此外,您不应该在主要行为中创建一个monobehavior对象。而是将其定义为公共属性并在编辑器中分配它(您还可以在运行时使用FindObjectOfType):

    public class main : MonoBehaviour {

public apiManager myApiManager; 

void OnGUI() {

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

}
}