Firebase Storage SDK无法在Unity Web Build中使用

问题描述 投票:0回答:1

我正在使用Firebase Storage在运行时下载一些资源的项目。

问题是我需要生成我的应用程序的Web构建,当我尝试时,Unity说找不到Firebase名称空间。

是否有解决方法可将Firebase Storage与WebGL构建一起使用?我读过一些人说Firebase的REST API可以实现,但我认为这不太容易,因为该项目使用了下载进度以及SDK所提供的其他功能。

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

firebase unity3d firebase-storage unity-webgl
1个回答
0
投票

[不幸的是,Firebase Unity SDK目前不支持网络目标。目前,即使使用Emscripten,它通过C ++进行绑定的方式也会相对困难。如果需要的话,我强烈建议您(和其他遇到此问题的人)提交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调用来获取该文件if,该文件被标记为可读取。因此,上面的内容可能变为:

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

我希望这会有所帮助,对不起,我没有更好的答案!

- 帕特里克

© www.soinside.com 2019 - 2024. All rights reserved.