public void ReplaceIMG(RawImage _rawImg, string path) { try { //var tex = DownloadSync("file://" + path).texture; var tex= DownloadHandlerTexture.GetContent(DownloadSync("file://" + path)); if (tex == null) return; tex.wrapMode = TextureWrapMode.Clamp; float width = tex.width; float height = tex.height; _rawImg.texture = tex; _rawImg.SetNativeSize(); tex = null; } catch (Exception e) { Debug.Log(e.Message); } } public static UnityWebRequest DownloadSync(string path, WWWForm form = null) { UnityWebRequest www; if (form != null) www = UnityWebRequest.Post(path, form); else www = UnityWebRequest.Get(path); www.SendWebRequest(); YieldToStop(www); return www; } private static void YieldToStop(UnityWebRequest www) { var @enum = DownloadEnumerator(www); while (@enum.MoveNext()) ; } private static IEnumerator DownloadEnumerator(UnityWebRequest www) { while (!www.isDone) { yield return null; } yield return www; }
时间: 2024-02-10 18:22:34 浏览: 54
vue-cli设置publicPath小记
这段代码是用来替换一个 RawImage 的 texture,使其显示一张图片。具体实现是通过下载图片,转换成 Texture2D,再将其赋值给 RawImage 的 texture 属性。其中 DownloadSync 方法使用 UnityWebRequest 发起同步的网络请求, DownloadEnumerator 方法使用 yield 实现了异步等待网络请求完成。这样做的好处是可以保证图片下载完成后再进行后续操作,避免了图片还没有下载完成就已经被赋值给 RawImage 的 texture 属性的情况。
阅读全文