【问题标题】:Firebase Storage SDK not working in Unity Web BuildFirebase 存储 SDK 在 Unity Web Build 中不起作用
【发布时间】:2019-09-30 20:48:07
【问题描述】:

我正在开发一个使用 Firebase 存储在运行时下载一些资源的项目。

问题是我需要为我的应用生成一个网络版本,当我尝试时,Unity 说找不到 Firebase 命名空间。

是否有将 Firebase 存储与 WebGL 构建一起使用的解决方法?我读过有人说使用 Firebase 的 REST API 是可能的,但我认为这不太容易,因为该项目使用下载进度和 SDK 提供的其他内容。

很高兴知道在 Unity Web 构建中运行良好的其他一些服务(我可以将文件存储在外部并在我的应用程序中下载它们)。目前我只知道 Firebase,所以我也想知道其他参考资料。

【问题讨论】:

    标签: firebase unity3d firebase-storage unity-webgl


    【解决方案1】:

    很遗憾,Firebase Unity SDK 目前不支持 web 目标。目前,它通过 C++ 绑定的方式即使使用 Emscripten 也相对困难。如果这是您想要的,我强烈建议您(以及遇到此问题的任何其他人)提交feature request。

    话虽如此,如果您打算只针对网络,我建议您尝试使用Unity's built in JavaScript bindings 直接与Web SDK 集成。即使对于 Web 目标,SDK 也会为您做很多繁重的工作,如果您只使用 REST API,您可能不会意识到自己错过了。

    现在,如果您只打算使用 Cloud Storage(而不是 Firestore)并且这些文件通常是您希望公开的,您可以直接通过 public URL 下载它们。如果你看这个例子:

    // Create a reference from an HTTPS URL
    // Note that in the URL, characters are URL escaped!
    var httpsReference = storage.refFromURL('https://firebasestorage.googleapis.com/b/bucket/o/images%20stars.jpg');
    

    您可以通过普通的UnityWebRequest 调用获取该文件如果它被标记为公众可读。所以上面可能变成:

    UnityWebRequest www = UnityWebRequest.Get("https://firebasestorage.googleapis.com/b/bucket/o/images%20stars.jpg");
    yield return www.SendWebRequest();
    // ... error handling
    byte[] results = www.downloadHandler.data;
    // ... create a texture from the byte[] array
    

    我希望这会有所帮助,很抱歉我没有更好的答案!

    --帕特里克

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      • 2017-01-25
      • 1970-01-01
      • 2017-07-17
      • 2018-12-16
      • 1970-01-01
      • 2018-03-02
      相关资源
      最近更新 更多