Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.6K
Views
¿Cómo cargar una imagen desde URL con Unity?

Por favor, sálvame de volverme loco.

No importa cuántas veces busque en Google, siempre termino con versiones (generalmente obsoletas) del siguiente código:

 IEnumerator setImage(string url) { Texture2D texture = profileImage.canvasRenderer.GetMaterial().mainTexture as Texture2D; WWW www = new WWW(url); yield return www; Debug.Log("Why on earh is this never called?"); www.LoadImageIntoTexture(texture); www.Dispose(); www = null; }

Estoy usando Unity 5, no 4. La URL que intento cargar existe. Por favor, brille un poco de luz sobre mí.

¿Cómo cargo una imagen a través de HTTP y la muestro en UnityEngine.UI.Image?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Para Unity 2018+, use UnityWebRequest que reemplaza la clase WWW .

 void Start(){ StartCoroutine(DownloadImage(url)); } IEnumerator DownloadImage(string MediaUrl) { UnityWebRequest request = UnityWebRequestTexture.GetTexture(MediaUrl); yield return request.SendWebRequest(); if(request.isNetworkError || request.isHttpError) Debug.Log(request.error); else YourRawImage.texture = ((DownloadHandlerTexture) request.downloadHandler).texture; }
over 4 years ago · Santiago Trujillo Report

0

Puedes hacer eso con async/await:

 using System.Threading.Tasks; using UnityEngine; using UnityEngine.Networking; public static async Task<Texture2D> GetRemoteTexture ( string url ) { using( UnityWebRequest www = UnityWebRequestTexture.GetTexture(url) ) { // begin request: var asyncOp = www.SendWebRequest(); // await until it's done: while( asyncOp.isDone==false ) await Task.Delay( 1000/30 );//30 hertz // read results: if( www.isNetworkError || www.isHttpError ) // if( www.result!=UnityWebRequest.Result.Success )// for Unity >= 2020.1 { // log error: #if DEBUG Debug.Log( $"{www.error}, URL:{www.url}" ); #endif // nothing to return on error: return null; } else { // return valid results: return DownloadHandlerTexture.GetContent(www); } } }

Ejemplo de uso:

 [SerializeField] string _imageUrl; [SerializeField] Material _material; Texture2D _texture; async void Start () { _texture = await GetRemoteTexture(_imageUrl); _material.mainTexture = _texture; } void OnDestroy () => Dispose(); public void Dispose () => Object.Destroy(_texture);// memory released, leak otherwise
over 4 years ago · Santiago Trujillo Report

0

aclaración rápida: https://docs.unity3d.com/ScriptReference/MonoBehaviour.StartCoroutine.html

 public void yourMethod() { StartCoroutine(setImage("http://url/image.jpg")); //balanced parens CAS } IEnumerator setImage(string url) { Texture2D texture = profileImage.canvasRenderer.GetMaterial().mainTexture as Texture2D; WWW www = new WWW(url); yield return www; // calling this function with StartCoroutine solves the problem Debug.Log("Why on earh is this never called?"); www.LoadImageIntoTexture(texture); www.Dispose(); www = null; }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!