【发布时间】:2020-06-13 19:55:46
【问题描述】:
我正在尝试将用户统一插入外部数据库。 我需要等到网络服务器回复错误或成功,但我无法做到......
这是我到目前为止所做的:
public class DBConnector : MonoBehaviour
{
string BASE_URL = "https://www.XXXXXX.com/API/";
public DBConnector()
{
}
public int registerUser(User user)
{
int returnInt = -1;
StartCoroutine(RegisterUser(user, returnValue =>
{
returnInt = returnValue;
}
));
Debug.Log(returnInt);
return returnInt;
}
IEnumerator RegisterUser(User user, System.Action<int> callback = null)
{
Debug.Log("a register user");
WWWForm form = new WWWForm();
using (UnityWebRequest www = UnityWebRequest.Post(BASE_URL + "userAPI.php", form))
{
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
yield return 1;
}
else
{
Debug.Log(www.downloadHandler.text);
yield return 0;
}
}
}
}
并称它为:
Debug.Log("Before registerUser");
conn = FindObjectOfType<DBConnector>();
result = conn.registerUser(user);
Debug.Log("After registerUser");
if (result == 0)
{
SceneManager.LoadScene("AccountCreatedScene");
}
RegisterUser 回调在 registerUser 方法完成后完成,因此总是返回 -1。
我是网络方面的新手,所以请帮忙.....怎么做?
谢谢
【问题讨论】:
-
注意协程与多线程无关!
标签: c# multithreading unity3d