2017-06-19 138 views
1

我正在从web服务(WWW)构建简单的用户数据检索功能。我无法解决这个问题,所以也许你们可以帮助我?StartCoroutine函数不适用于android,但在Unity编辑器中正常工作

我正在使用StartCoroutine方法。当我在我的android设备上构建并运行(android 6.0.1)时,我单击按钮,它什么也不做!绝对没有!但是,在Unity编辑器中,它完美运行!

我搜索了关于这个问题的更多信息,有人推荐我一个名为“更有效的协程”的插件。 http://trinary.tech/category/mec/那么现在你可能会认为这个插件根本没有帮助我!

这里是用插件我的C#代码(我注释掉标准统一代码):

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 
using UnityEngine.SceneManagement; 
//using "More Effective Coroutines" plugin: 
using MovementEffects; 
public class Login : MonoBehaviour { 

    public InputField LoginUsername; 
    private string usernameInput; 

    public InputField LoginPassword; 
    private string passwordInput; 

    string connectionLink = "00.00.00.211/app/login.php"; 

    public Text conResponse; 

    public void OnSubmit(){ 

     usernameInput = LoginUsername.text; 
     passwordInput = LoginPassword.text; 

     //DEFAULT: StartCoroutine (Login(usernameInput, passwordInput)); 
     Timing.RunCoroutine(_login(usernameInput, passwordInput)); 
    } 

    //DEFAULT: IEnumerator login(string username, string password){ 
    IEnumerator<float> _login(string username, string password){ 

     WWWForm form = new WWWForm(); 

     form.AddField("usernamePost", username); 
     form.AddField("passwordPost", password); 

     WWW www = new WWW(connectionLink, form); 

     //DEFAULT: yield return www; 
     yield return Timing.WaitForSeconds(1f); 

     if (www.text == "ok") { 

      SceneManager.LoadScene ("inGame", LoadSceneMode.Single); 

     } else { 

      conResponse.text = www.text; 

      switch (www.text) { 
       case"noUser": 
        conResponse.text = "User "+username+" not found in database!"; 
        break; 

       case"loginFailed": 
        conResponse.text = "Check your password and try again!"; 
        break; 
      } 

      Debug.LogWarning(www.text); 

     } 
    } 
} 

请看看,并给我一个反馈什么,我做错了什么? C#是我的新语言。

Regards, Rob。

+0

你确定在Android上调用了'OnSubmit()'吗?我的意思是,如果你添加一个Debug.Log(“OnSubmit clicked”);或类似的东西,你可以看到在控制台(即logcat)? – mayo

+0

@mayo是的,它在Android上被调用。 – user3292639

+1

什么是'connectionLink'?如果'00.00.00.211'是本地机器的地址,则Android上的内部版本将尝试访问'android'本地机器。除非您的服务器在您的手机上运行,​​否则该应用将无法创建连接。 .. – mayo

回答

2

我发现它为什么不能在@mayo的帮助下在移动设备上工作!

我只是忘了在地址的开头添加https://

string connectionLink = "https://00.00.00.211/app/login.php";

希望别人会得到这个有用!

+0

这是真的,因为在Windows上你不需要它 - 它会自动添加,但Android设备没有。 – dehood

相关问题