【发布时间】:2017-05-08 03:16:29
【问题描述】:
在 unity3d 中,我使用 WWW 类从链接下载纹理,然后使用获得的纹理创建一个 Sprite,并将其显示在屏幕上。这在 Unity 编辑器中工作得很好,但是当我在浏览器中将它作为 HTML5 运行而不是显示我的 Sprite 时,会出现一个红色问号。为什么?
这是我的 C# 代码:
GameObject myImage;
Sprite neededSprite;
IEnumerator Start () {
WWW getMyImage= new WWW("http://previews.123rf.com/images/burakowski/burakowski1202/burakowski120200228/12221967-Grunge-Example-stamp-Stock-Vector-demo.jpg");
myImage = GameObject.Find("myImage");
yield return getMyImage;
Texture2D rawImage = getMyImage.texture;
neededSprite = Sprite.Create(rawImage, new Rect(0.0f, 0.0f, rawImage.width, rawImage.height), new Vector2(0.5f, 0.5f), 100.0f);
myImage.GetComponent<Image>().sprite = neededSprite;
}
【问题讨论】:
-
您的浏览器控制台有错误吗?我怀疑是跨域问题:docs.unity3d.com/Manual/webgl-networking.html
-
尝试将下载的纹理保存为 png 以查看它是否是有效的纹理。使用
Texture2D.EncodeToPNG -
这是一个学习如何处理 CORS 的好网站:enable-cors.org。如果服务器是 Apache,最简单的方法是在您尝试获取的资源旁边放置一个带有特定说明的 htaccess
-
将
Header set Access-Control-Allow-Origin "*"放入.htaccess文件后,一切正常
标签: c# html unity3d web sprite