I’m trying to load images from a different website on my game, using http://www.LoadImageIntoTexture(…), and this works on the desktop and my iPad. Though it doesn’t in the web player. I get the following error:
You are trying to load data from a www stream which had the following error when downloading. Rejected because no crossdomain.xml policy file was found UnityEngine.WWW:LoadImageIntoTexture(Texture2D)
Which explains the problem very clearly, though there’s one weird thing. In the Unity Documentation in “Security Sandbox of the Webplayer” there’s an exceptions part that says:
You are allowed to download images from servers that do not have a crossdomain.xml file. However, the only thing you are allowed to do with these images is use them as textures in your scene. You are not allowed to use GetPixel() on them. You are also no longer allowed to read back from the screen. Both attempts will result in a SecurityException being thrown. The reasoning is here is that it’s okay to download the image, as long as the content developer gets no access to it. So you can display it to the user, but you cannot send the bytes of the image back to some other server.
So this says it IS allowed… What am I doing wrong? Or is this a bug? :s
The link I’m trying to load is: http://deckbox.org/mtg/Ponder/tooltip (Note: if you go to this link, you’ll see a bunch of text, though it is a picture, since it does work in the desktop version of my game.) I also tried this link: http://static.ddmcdn.com/gif/how-to-solve-cat-behavior-problems-2.jpg and this one does work. So there’s a hint at what’s wrong. Lastly, I also tried this link: http://gatherer.wizards.com/Handlers/Image.ashx?name=Ponder&type=card which does give a proper image when opened in your browser, but doesn’t load in the webplayer…
So, I have a vage idea of what’s wrong, though no idea how to fix it. Hope someone here can help.
Thanks!
You’re not setting the mime type on the tooltip image when it’s requested from the server. That’s why it shows as text instead of an image when loading in the browser. Unity can’t tell it’s an image and thinks you are trying to download binary data from a site that doesn’t have a crossdomain.xml.I thinkif you rename that image to tooltip.jpegor add the “image/jpeg” mime type in the http headerit will work.Update: I finally got around to doing some more tests and Unity doesn’t care about the mime type it only cares about the file extension. If you don’t have a crossdomain policy it will only load images if the filename ends with ‘.png’, ‘.jpg’ or ‘.jpeg’, otherwise it’s rejected.
Yet another example of how busted the WWW class in Unity is.