当前位置:   article > 正文

Unity解决:没有UnityWebRequest.Result_unitywebrequest' does not contain a definition for

unitywebrequest' does not contain a definition for 'result' and no accessibl

当我在Unity 2019中使用Unity 2021的代码satable时。
控制台显示
“UnityWebRequest”不包含“result”的定义,并且找不到接受“UnityWebRequest”类型的第一个参数的可访问扩展方法“result”(是否缺少using指令或程序集引用?)
漏洞/问题:

if (req.result == UnityWebRequest.Result.ConnectionError || req.result == UnityWebRequest.Result.ProtocolError)

版本2020.3中添加了result
在该版本之前,只需遵循相应版本API中的示例,例如2019.4 API
例如,您可以简单地检查error中是否有任何内容

  1. using (var webRequest = UnityWebRequest.Get(uri))
  2. {
  3. yield return webRequest.SendWebRequest();
  4. if (!string.IsNullOrWhiteSpace(webRequest.error))
  5. {
  6. Debug.LogError($"Error {webRequest.responseCode} - {webRequest.error}");
  7. yield break;
  8. }
  9. Debug.Log(webRequest.downloadHandler.text);
  10. }

或者如果您想进一步区分isNetworkError(包括没有互联网连接、主机不可访问、DNS解析错误等错误)和isHttpError(基本上与responseCode >= 400相同)
如果你的问题是关于向下兼容性,但支持两个版本要么坚持2020.3之前的方式或使用Conditional Compilation和做例如.

  1. #if UNITY_2020_3_OR_NEWER
  2. if(webRequest.result == UnityWebRequest.Result.ConnectionError || webRequest.result == UnityWebRequest.Result.ProtocolError)
  3. #else
  4. if(!string.IsNullOrWhiteSpace(webRequest.error))
  5. #endif
  6. {
  7. Debug.LogError($"Error {webRequest.responseCode} - {webRequest.error}");
  8. yield break;
  9. }

或者如下:

  1. /// <summary>
  2. /// 执行下载行为
  3. /// </summary>
  4. /// <param name="bundleInfoList"></param>
  5. /// <returns>返回的List包含的是还未下载的Bundle</returns>
  6. private async Task<List<BundleInfo>> ExecuteDownload(ModuleConfig moduleConfig, List<BundleInfo> bundleList)
  7. {
  8. while (bundleList.Count > 0)
  9. {
  10. BundleInfo bundleInfo = bundleList[0];
  11. UnityWebRequest request = UnityWebRequest.Get(GetServerURL(moduleConfig, bundleInfo.bundle_name));
  12. string updatePath = GetUpdatePath(moduleConfig.moduleName);
  13. request.downloadHandler = new DownloadHandlerFile(string.Format("{0}/" + bundleInfo.bundle_name, updatePath));
  14. await request.SendWebRequest();
  15. #if UNITY_2020_3_OR_NEWER
  16. if (request.result == UnityWebRequest.Result.Success)
  17. {
  18. Debug.Log("下载资源:" + bundleInfo.bundle_name + " 成功");
  19. bundleList.RemoveAt(0);
  20. }
  21. else
  22. {
  23. break;
  24. }
  25. #else
  26. if (string.IsNullOrEmpty(request.error) == true)
  27. {
  28. Debug.Log("下载资源:" + bundleInfo.bundle_name + " 成功");
  29. bundleList.RemoveAt(0);
  30. }
  31. else
  32. {
  33. break;
  34. }
  35. #endif
  36. }
  37. return bundleList;
  38. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/95750
推荐阅读
相关标签
  

闽ICP备14008679号