2 回答
TA贡献1860条经验 获得超8个赞
请注意,接受答案的while循环会完全阻止编辑器,直到下载完成。对于简单的文本可能没问题,但对于较大的文件,这可能会成为一个问题。
但是EditorApplication.update,您可以订阅以便在编辑器中的每一帧调用一个方法。所以对于 EditorWindow 你可以做类似的事情
private IEnumerator currentDownload;
private void ProcessDownload()
{
if(currentDownload!=null) currentDownload.MoveNext();
}
private IEnumerator UpdateVersion(string message)
{
string post_url = NetworkManager.baseUrl + "VersionUpdate.php";
WWWForm form = new WWWForm();
form.AddField("Message", message);
form.AddField("Version", Application.version);
UnityWebRequest www = UnityWebRequest.Post(post_url, form);
www.chunkedTransfer = false;
yield return www.SendWebRequest();
if(www.error == null){
Debug.Log(www.downloadHandler.text);
} else {
Debug.Log("error!: " + www.error);
}
}
并像使用它
// makes sure the callback is added only once
EditorApplication.update -= ProcessDownload;
EditorApplication.update += ProcessDownload;
currentDownload = UpdateVersion("whatever string");
TA贡献1794条经验 获得超8个赞
我遇到了同样的问题。我最终得到了以下代码,它以非协程方法执行 webrequest。
private void UpdateVersion(string message)
{
string post_url = NetworkManager.baseUrl + "VersionUpdate.php";
WWWForm form = new WWWForm();
form.AddField("Message", message);
form.AddField("Version", Application.version);
UnityWebRequest www = UnityWebRequest.Post(post_url, form);
www.chunkedTransfer = false;
www.SendWebRequest();
while (!www.isDone)
{
// do nothing
}
if(www.error == null){
Debug.Log(www.downloadHandler.text);
} else {
Debug.Log("error!: " + www.error);
}
}
- 2 回答
- 0 关注
- 240 浏览
添加回答
举报
