首先,我是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());
}
}
您能否向我提供有关它应该如何工作或我是否错过了什么的信息?感谢。
答案 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());
}
}