私はC#と私は通常Javaを開発し、IEnumeratorを使って値を返すのに問題があります。基本的に私は、サーバー上のデータベースにユーザー名とパスワードを登録するクライアント側のスクリプトを持っています。私の問題は、ボタンをクリックすると、クライアントサイドスクリプトのメソッドを呼び出して、ユーザー名とパスワードの入力をデータベースに追加する必要があるということです。これを処理するメソッドは、登録が成功/失敗であったことを示す文字列を返す必要があります。私はこれを実装しようとすると、私は次のエラーを取得する:値を返すIEnumerator
」とNullReferenceException: UnityEngine:オブジェクト(23資産/スクリプト/ RegisterScript.csで) RegisterScript.OnMouseUp()のインスタンスに設定されていないオブジェクト参照を。 SendMouseEvents:DoSendMouseEvents() "
以下は2人のクラスのコードです。クライアント側のスクリプトにユーザー名とパスワードを渡すボタンに付加
クライアント側のスクリプト
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;
}
}
登録スクリプト
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);
}
}
:
は、ここに私のソリューションです。 –
関連、より良い解決法imho:http://answers.unity3d.com/questions/207733/can-coroutines-return-a-value.html – cregox