Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.6K
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda