私は次の問題に直面しています:googleドライブからpngファイルをダウンロードしましたが、すべてのバイトが正常に受信されましたが(Texture2D
) Image
にはSprite
と表示されていますが、赤だけに疑問符が表示されます。HttpWebRequestでダウンロードした後、PNGファイルが赤い疑問符で表示される
何か不足していますか?
以下のコード:
HttpWebRequest request = (HttpWebRequest) WebRequest.Create("https://content.googleapis.com/drive/v3/files/" + fileId + "?alt=media");
request.Method = "GET";
request.ContentType = "image/png";
request.Headers.Add("Authorization", "Bearer " + AUTH_TOKEN);
WebResponse response = request.GetResponse();
byte[] bytes = new byte[response.ContentLength];
response.GetResponseStream().Read(bytes, 0, (int) response.ContentLength);
response.Close();
Texture2D texture2d = new Texture2D(8, 8);
Sprite sprite = null;
if (texture2d.LoadImage(bytes)) {
sprite = Sprite.Create(texture2d, new Rect(0, 0, texture2d.width, texture2d.height), Vector2.zero);
}
if (sprite != null) {
imageToUpdate.sprite = sprite;
}
Omg!ありがとうございました! 私は(間違って)、response.ContentLengthが適切なバイト数を与えると、Readは単にすべてを返すと仮定していました。 私はすでに非同期通信を行っていますが、上記のコードは問題の概要を簡略化しています。今はすべてがうまくいくはずです:)もう一度ありがとう! – MerlinBG
あなたは0になるまで読み続ける必要があります。*「すでに非同期で通信を行っています。上のコードは問題の概要を簡略化しています」*ニース。それは、人々がUnityで間違いを犯すということだけです。あなたが正しい軌道にいるように見えます。ハッピーコーディング! – Programmer