やあみんな私は c# が初めてで、通常は Java を開発していて、IEnumerator を使用して値を返すのに問題があります。基本的に、サーバー上のデータベースにユーザー名とパスワードを登録するクライアント側スクリプトがあります。私の問題は、ボタンをクリックすると、クライアント側スクリプトのメソッドを呼び出して、ユーザー名とパスワードのユーザー入力をデータベースに追加する必要があることです。これを担当するメソッドは、登録が成功したか失敗したかを示す文字列を返す必要があります。これを実装しようとすると、次のエラーが発生します。
「 NullReferenceException: オブジェクト参照がオブジェクト RegisterScript.OnMouseUp () のインスタンスに設定されていません (Assets/Scripts/RegisterScript.cs:23 で) UnityEngine.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);
}
}