【问题标题】:How to download image using javascript in Unity WebGL如何在 Unity WebGL 中使用 javascript 下载图像
【发布时间】:2016-12-22 22:30:39
【问题描述】:

我正在尝试将图像从服务器下载到我的 Unity WebGL 应用程序。我使用了 WWW,它可以工作,但是它在下载时会在浏览器中冻结整个 WebGL 应用程序。这个简单的代码有效,但它会在下载图像时停止应用程序。

WWW loader = new WWW(url);
yield return loader;

我已经用尽了使用 Unity 下载图像的所有可能性,因为它要么冻结要么不工作,

相反,我想看看是否有可能统一告诉浏览器使用 javascript 为我下载图像,然后让它以某种方式将该图像传递回我的统一 c# 代码。

有人知道如何使用外部 java 脚本来做到这一点吗?我知道它可以做到这一点,因为我有代码可以使用外部 java 脚本从 Unity 向服务器发送图片,并且它可以在不冻结应用程序的情况下工作,所以它必须也可以以其他方式工作。

谢谢!

【问题讨论】:

    标签: unity3d unity-webgl


    【解决方案1】:

    我还没有在 WebGL 构建中看到 WWW 冻结的实例。您可能做错了什么,问题中的两行代码不能用来说明问题所在。

    如果 WWW API 确实存在问题,请使用 UnityWebRequest。无需为此使用 Javascript。

    void Start()
    {
        StartCoroutine(downloadTexture("http://www.myUrl.png"));
    }
    
    IEnumerator downloadTexture(string url)
    {
        using (UnityWebRequest www = UnityWebRequest.GetTexture(url))
        {
            yield return www.Send();
    
            if (www.isError)
            {
                Debug.Log(www.error);
            }
            else
            {
                Texture myTexture = DownloadHandlerTexture.GetContent(www);
            }
        }
    }
    

    【讨论】:

    • 在 WebGL 中使用 WWW 时出现冻结,我也尝试过你的代码,当我运行它时,它在最后一行出现错误“error m_instandeID!=0”,请尝试查看
    • 您所要做的就是旋转一个立方体,同时使用 WWW 下载几张图片,您会看到立方体在下载图片时停止并开始旋转很多次,即使在编辑器中它也会发生。这是一个大问题,因为用户会看到停止和启动看起来真的很糟糕!!!
    • 作为错误,这是一个错误。请参阅 here 了解您的 error m_instandeID!=0 错误。只需在调用DownloadHandlerTexture.GetContent 函数之前添加yield return new WaitForEndOfFrame();。如果在此之后仍然有问题,请更新到 Unity 5.5。很可能与此相关的任何错误现在都已修复。
    • @程序员,听程序员的,他是程序员
    • @programmer,我做了 WaitForEndOfFrame 和产量,它仍然给出错误。我有统一 5.4,版本 5.5 破坏了我的代码中的其他内容,这就是我没有升级到它的原因。我不敢相信这个 EndOfFrame 和 WWW 错误一直存在,而且没有人统一修复它。 WWW是unity中最基础的东西,如果不行那还不如挂了。
    猜你喜欢
    • 2019-09-28
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    相关资源
    最近更新 更多