Unity LoadImageIntoTexture()在WebPlayer中不起作用

时间:2012-11-22 20:59:03

标签: unity3d

我正在尝试使用www.LoadImageIntoTexture(...)从我的游戏中的其他网站加载图像,这适用于桌面和我的iPad。虽然它不在网络播放器中。我收到以下错误:

您正在尝试从www流加载数据,下载时出现以下错误。因为没有找到crossdomain.xml策略文件而被拒绝UnityEngine.WWW:LoadImageIntoTexture(Texture2D)

这很清楚地解释了这个问题,尽管有一个奇怪的事情。在“Security Sandbox of the Webplayer”中的Unity文档中,有一个例外部分说:

您可以从没有crossdomain.xml文件的服务器下载图像。但是,您唯一允许使用这些图像的方法是将它们用作场景中的纹理。您不能在它们上使用GetPixel()。您也不再被允许从屏幕上回读。两次尝试都会导致抛出SecurityException。这里的原因是,只要内容开发者无法访问它,就可以下载图像。因此,您可以将其显示给用户,但不能将图像的字节发送回其他服务器。

所以这说是允许的......我做错了什么?或者这是一个错误? :■

我正在尝试加载的链接是:http://deckbox.org/mtg/Ponder/tooltip(注意:如果你转到这个链接,你会看到一堆文字,虽然它是一张图片,因为它在桌面上有效我的游戏版本。)我也试过这个链接:http://static.ddmcdn.com/gif/how-to-solve-cat-behavior-problems-2.jpg,这个确实有效。所以有一个暗示什么是错的。最后,我还尝试了这个链接:http://gatherer.wizards.com/Handlers/Image.ashx?name=Ponder&type=card在浏览器中打开时会提供正确的图像,但不会在网页播放器中加载...

所以,我有一个关于错误的想法,但不知道如何解决它。希望有人可以提供帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

当从服务器请求时,您没有在工具提示图像上设置mime类型。这就是为什么它在浏览器中加载时显示为文本而不是图像。 Unity无法判断它是一个图像,并认为您正在尝试从没有crossdomain.xml的站点下载二进制数据。

我认为如果您将该图像重命名为tooltip.jpeg 或在http标头中添加“image / jpeg”mime类型,它将起作用。

更新:我终于开始做更多的测试了,Unity并不关心它只关心文件扩展名的mime类型。如果您没有跨域策略,则只会在文件名以“.png”,“.jpg”或“.jpeg”结尾时加载图片,否则会被拒绝。

另一个关于如何破坏Unity中WWW类的例子。