Hey Leute Ich bin neu zu C# und untiy Ich entwickelte normalerweise Java und habe ein Problem, einen Wert mit IEnumerator. Grundsätzlich habe ich ein clientseitiges Skript, das einen Benutzernamen und ein Passwort zu einer Datenbank auf einem Server registriert. Mein Problem ist, dass wenn ich auf eine Schaltfläche klicke, die Methode im clientseitigen Skript aufgerufen werden soll, um die Benutzereingabe für ihren Benutzernamen und ihr Passwort in die Datenbank einzufügen. Die Methode, die dafür verantwortlich ist, sollte eine Zeichenfolge zurückgeben, die angibt, dass die Registrierung erfolgreich/nicht erfolgreich war. Wenn ich versuche, dies zu implementieren bekomme ich folgende Fehlermeldung:Einen Wert zurückgeben IEnumerator
"Nullreferenceexception: Objektverweis nicht auf eine Instanz eines Objekts RegisterScript.OnMouseUp gesetzt() (bei Aktiva/Scripts/RegisterScript.cs: 23) UnityEngine. SendMouseEvents: DoSendMouseEvents() "
Unten ist der Code der beiden Klassen dank an alle, die helfen können!
Client-Seite Skript
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class ClientSideScript : MonoBehaviour {
public string RegUserUrl = "http://localhost/reguser.php?";
public IEnumerable<string> RegisterUsers(string name , string pass){
string post_url = registerUser + "name=" + name + "&pass=" + pass;
print (post_url);
WWW hs_post = new WWW(post_url);
string check = hs_post.ToString();
yield return check;
//return regname;
}
}
Registrierung Skript einer Schaltfläche zugewiesen, die den Benutzernamen und das Passwort an die Client-Seite Skript übergibt
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class RegisterScript : MonoBehaviour {
public string Registeredpassword;
public string Registeredusername;
public Texture2D registerButton;
//Use this for initialization
void OnGUI() {
Registeredpassword = GUILayout.PasswordField(Registeredpassword, "*"[0], 25);
Registeredusername = GUILayout.TextField(Registeredusername, 25);
}
void OnMouseUp(){
ClientSideScript client = (ClientSideScript)FindObjectOfType(typeof(ClientSideScript));
IEnumerable<string> stringcheck = client.RegisterUsers(Registeredusername , Registeredpassword);
print (stringcheck);
}
}
Von diesem oberen Code, ich nicht alles sehen, die IEnumerable sein kann. –
verwandt, und mit einer besseren Lösung imho: http://answers.unity3d.com/questions/207733/can-corutines-return-a-value.html – cregox