Jump to content
Unity Insider Forum
Sign in to follow this  
shadowdiver

uGUI InputField und WWWForm

Recommended Posts

Hallo,

ich bin gerade mit dem Login-Script beschäftigt und bekomme zwei Fehlermeldungen bei folgendem Code:

 

using UnityEngine;
using System.Collections;
public class LoginMenu : MonoBehaviour {
private static string URI = "http://beispiel.de/";
public string AuthScript = "login.php";
public string hash = "hashcode";
public string levelToLoad = "farm";
public InputField email;
public InputField passwd;
public void Login () {
 Debug.Log("Login");
 Debug.Log(email);
 Debug.Log(passwd);
 WWWForm form = new WWWForm();
 form.AddField("email", email);
 form.AddField("passwd", passwd);
 WWW www = new WWW(URI + AuthScript, form);
 yield return www;
 if (www.error != null) {
  Debug.LogError (www.error);
 } else {
  Debug.Log(www.text);

  if (www.text == "enter game") {
if (Application.CanStreamedLevelBeLoaded (levelToLoad)) {
 Application.LoadLevel (levelToLoad);
}
  }

  www.Dispose();
 }
}
}

 

Zum Einen wird der Typ InputField nicht erkannt.

The type or namespace name `InputField' could not be found. Are you missing a using directive or an assembly reference?

 

Und zum Anderen gibt es einen Fehler in der Loginfunktion den ich nicht verstehe. Wo ist da ein Iterator?

The body of `LoginMenu.Login()' cannot be an iterator block because `void' is not an iterator interface type

Share this post


Link to post
Share on other sites

Zum einen hast du den Namespace UI nicht eingebunden, sprich, du musst entweder diesen am Anfang des Skriptes hinzufügen oder UnityEngine.Ui.InputField schreiben.

 

 

Zum anderen dein yield Statement, das funkt in deiner Methode nicht.

Share this post


Link to post
Share on other sites

Das "using" hatte ich übersehen.

 

Wie bekomme ich dann die Antwort des Servers?

Wenn ich nur "yield www;" schreibe, wie ich ich es in der vorherigen JS-Version hatte, bekomme ich den Fehler "A local variable named `www' is already defined in this scope".

Share this post


Link to post
Share on other sites

Hab es hin bekommen.

 

Für alles die das gleiche Problem haben:

In der Methode des Button folgenden Aufruf nach WWW www = new WWW(pub.URL + AuthScript, form);.

StartCoroutine(DoLogin(www));

Und alles was darunter steht in eine eigene Methode auslagern.

IEnumerator DoLogin(WWW www)

{

yield return www;

 

if (www.error != null) {

Debug.LogError (www.error);

} else {

Debug.Log(www.text);

 

if (www.text == "enter game") {

if (Application.CanStreamedLevelBeLoaded (levelToLoad)) {

Application.LoadLevel (levelToLoad);

}

}

 

www.Dispose(); //clear our form in game

}

}

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...