我正在为我的网络服务申请。我使用LitJson
,我完成了应用程序但是在导出它以在我的android中测试它的那一刻与WWW IEnumerator
无关。
例如,一个启动会话的按钮,只有调用IEnumerator
的函数有效,但IEnumerator
本身不起作用,我通过发出一条警告消息来检查它为应用程序创建。
这是按钮调用的功能:
public void LogIn() {
UserName = GameObject.Find("inputUsuario").transform.GetChild(2).gameObject.GetComponent < Text > ().text;
Password = GameObject.Find("inputPassword").transform.GetChild(2).gameObject.GetComponent < Text > ().text;
Debug.Log("Username:" + UserName + "And Password:" + Password);
StartCoroutine(LogInWWW());
}
这是IEnumerator
:
public IEnumerator LogInWWW() {
WWW www = new WWW(UrlLogin + "?userName=" + UserName + "&password=" + Password);
yield return www;
print(www.text);
if (www.error == null) {
ProcessjsonLogin(www.text);
} else {
Debug.Log("ERROR: " + www.error);
}
}
我必须补充说Android上的调试控制台没有错误。 此外,我必须澄清,我已经在网址中添加了前缀“http://”,因为它是一个解决方案,可以提供我见过的问题。
答案 0 :(得分:1)
好吧,有时候这些错误很少见,但总之,由于“试错”,我设法得到错误,问题是我试图获得UserName
和{{1的值使用Password
,如下面的代码:
GetChild
由于某些原因在Android上该对象不存在,我学到了这一点,因为我正在测试直到我遇到问题的部分代码。然后我决定更改代码以更具体的方式查找文本,通过inputUserTextObj更改文本对象,与Password对象相同并通过以下方式更改代码:
`Password = GameObject.Find("inputPassword").transform.GetChild(2).gameObject.GetComponent<Text>().text;`
正如我所说,我知道问题不是IEnumerator,但是看起来很奇怪Debugging并没有向我显示任何错误,因为它是“GameObject is Null”的典型错误,我甚至可以向他们发誓我调试应用程序的生活,我从未表现出错误
但是,嘿,非常感谢你们的时间,真的感受到支持,并原谅我花时间。
答案 1 :(得分:-2)
当您实例化new WWW(strung Url)
时,它也会隐式启动请求,但它不是同步操作,它是异步的,因此您必须先检查www.isDone
才能使用www.text
。我认为它适用于Unity Editor,因为它只是一个更快的连接。
public IEnumerator Request(){
using (var testRequest = new WWW(@"URL")) {
var totalWaited = 0;
var timeOuted = false;
while (testRequest.isDone == false) {
yield return new WaitForSeconds(1);
totalWaited++;
if (totalWaited > timeOutInSeconds) {
timeOuted = true;
}
}
if (timeOuted) { Debug.LogError("TimeOut"); yield break; }
yield return testRequest.text;
}