Firebase Storage SDK не работает в Unity Web Build - PullRequest
0 голосов
/ 30 сентября 2019

Я работаю над проектом, который использует Firebase Storage для загрузки некоторых ресурсов во время выполнения.

Проблема в том, что мне нужно создать веб-сборку моего приложения, и когда я пытаюсь, Unity говорит, что пространство имен Firebaseне может быть найден.

Есть ли обходной путь для использования Firebase Storage с компоновкой WebGL? Я читал, что люди говорят, что это возможно с REST API Firebase, но я не думаю, что это слишком просто, потому что в проекте используется прогресс загрузки и другие вещи, предоставляемые SDK.

Было бы неплохо узнать некоторые другие сервисы (где я могу хранить файлы снаружи и загружать их в свое приложение), которые хорошо работают в веб-сборке Unity. В настоящее время я знаю только Firebase, поэтому я хотел бы знать и другие ссылки.

1 Ответ

1 голос
/ 01 октября 2019

К сожалению, Firebase Unity SDK не поддерживает веб-цель в настоящее время. В настоящее время способ связывания через C ++ сделает его относительно сложным даже с Emscripten. Я настоятельно рекомендую вам (и всем, кто сталкивается с этим вопросом) подать запрос функции , если это то, что вам нужно.

При этом, если вы планируете просто ориентироваться на Интернет,Я бы рекомендовал использовать встроенные в Unity привязки JavaScript для прямой интеграции с Web SDK . Даже для веб-целей SDK делает много тяжелой работы для вас, и вы, возможно, не поймете, что вам не хватает, если вы просто используете REST API.

Теперь, если вы планируете использовать толькоОблачное хранилище (а не, скажем, Firestore), и это файлы, которые обычно ожидаются как общедоступные, вы можете просто загрузить их напрямую через публичный 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

Надеюсь, это немного поможет, и мне жаль, что у меня нет лучшего ответа!

- Патрик

...