我已经制作了一个360度图像查看器,我正在使用c#脚本动态更改图像纹理,因此它在PC统一上运行良好但是当我在Android设备上运行时它会说错误如下:
IEnumerator registerFunc(WWW www)
{
yield return www;
if (www.error == null)
//if(true)
{
Debug.Log("OK - CountTime");
texturas = www.texture;
www.Dispose();
www = null;
sphereMS.material.mainTexture = texturas;// here i am getting error
}
else
{
Debug.Log("ERROR");
}
}
我的代码
var div = document.createElement('img');
div.innerHTML = '<img src=`https://321.com/2<3.png` / >';
var elements = div.childNodes;
console.log(elements[0].src);
所以任何人都可以帮我解决这个问题。谢谢!
答案 0 :(得分:0)
分辨率为9999x2429,sphereMS是我拥有的公共变量 使用拖放分配球体
这就是问题所在。 9999真的很大。大多数Android设备的限制大约是2048.除非你在非常高端和昂贵的Android设备上运行,否则任何超出此限定都是一个问题。
要尝试的一件事是替换
texturas = www.texture;
带
texturas = new Texture2D(4, 4);
texturas.LoadImage(www.bytes);
LoadImage
函数用于将jpg / png图像加载到纹理中。由于图像的大小,它可能也会失败。
如果LoadImage
失败,那么您的服务器上的每个平台都应具有不同的纹理分辨率。 Android平台应该请求较低分辨率版本的纹理。只需继续降低纹理分辨率,直到它停止崩溃。 2048分辨率应该没问题。
我建议您阅读有关Unity中纹理大小限制的this帖子。
编辑:
如果您已将分辨率更改为低于2048并且问题仍然存在,那么这是一个错误。
安装Unity 2017.2.0p1或2017.3.0b3以获取修复程序。很少有人通过google-cardboard插件体验这一点。
答案 1 :(得分:-1)