J'utilise DownloadHandlerTexture.GetContent
pour obtenir ma texture:Faire un Texture2D lisible dans l'unité lors du chargement du serveur
www = UnityWebRequest.GetTexture("http://www.example.com/loadTex/?tag=" + tag);
www.SetRequestHeader("Accept", "image/*");
async = www.Send();
while (!async.isDone)
yield return null;
if (www.isError) {
Debug.Log(www.error);
} else {
yield return null;
tex = DownloadHandlerTexture.GetContent(www);
}
Après le chargement, je voudrais le mettre en cache dans un fichier pour moi:
byte[] pic = tex.EncodeToPNG();
File.WriteAllBytes(Application.persistentDataPath + "/art/" + tag + ".png", pic);
A ce stade, je reçois l'exception:
UnityException: Texture '' is not readable, the texture memory can not be accessed from
scripts. You can make the texture readable in the Texture Import Settings.
Je pense que je dois le rendre lisible en quelque sorte. Je l'ai googlé, mais les seules réponses que je reçois est de savoir comment le rendre lisible par l'éditeur.
Je m chargement de texture pour l'utiliser dans mes modèles. Mais quand le programme se termine, j'essaye de le mettre en cache dans les fichiers. La raison pour laquelle j'utilise 'DownloadHandlerTexture.GetContent' est parce qu'elle est optimisée pour la mémoire. – serge
Au lieu de mettre en cache à la fin, mettez en cache lorsque vous l'obtenez. C'est tout à fait pareil. – Everts
Semble raisonnable, je vais essayer quand je rentre à la maison, et signaler bientôt. Il est également moins efficace de charger la texture à partir d'octets au lieu d'utiliser 'DownloadHandlerTexture.GetContent' – serge