mergeInto(LibraryManager.library, { DownloadFile: function (path, objectName, callback, fallback) { var parsedPath = UTF8ToString(path); var parsedObjectName = UTF8ToString(objectName); var parsedCallback = UTF8ToString(callback); var parsedFallback = UTF8ToString(fallback); try { firebase .storage() .refFromURL(parsedPath) .getDownloadURL() .then(function (url) { unityInstance.Module.SendMessage( parsedObjectName, parsedCallback, JSON.stringify({ url: url, // base64File: arrayBufferToBase64(data), storagePath: parsedPath, }) ); }) .catch(function (error) { unityInstance.Module.SendMessage( parsedObjectName, parsedFallback, JSON.stringify(error, Object.getOwnPropertyNames(error)) ); }); } catch (error) { unityInstance.Module.SendMessage( parsedObjectName, parsedFallback, JSON.stringify(error, Object.getOwnPropertyNames(error)) ); } function arrayBufferToBase64(buffer) { var binary = ""; var bytes = new Uint8Array(buffer); var len = bytes.byteLength; for (var i = 0; i < len; i++) { binary += String.fromCharCode(bytes[i]); } return window.btoa(binary); } }, });