You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity集成Firebase Storage报错:名称'Task'在当前上下文中不存在

解决Unity Firebase Storage上传代码中'Task'和'StorageMetadata'不存在的问题

嘿,看你的错误日志其实已经给出了明确的线索,咱们一步步把这个问题解决掉:

1. 先搞定Task找不到的问题

日志里直接提示了「Are you missing `System.Threading.Tasks' using directive?」,这就是问题根源!你只需要在脚本的最顶部加上这个using语句:

using System.Threading.Tasks;

Task是.NET异步编程的核心类型,必须引用这个命名空间才能正常使用。

2. 解决StorageMetadata的问题

StorageMetadata是Firebase Storage专属的类型,你可以在脚本顶部加上Firebase Storage的命名空间引用,这样就不用每次都写冗长的Firebase.Storage.StorageMetadata了:

using Firebase.Storage;

3. 检查Firebase包是否正确导入

虽然你是照着官方文档写的,但Unity 2017.3属于比较旧的版本,得确认Firebase Storage的SDK有没有正确安装:

  • 打开Unity的Package Manager(Window > Package Manager),查看Firebase Storage包是否已安装,且版本适配你的Unity 2017.3(官方有对应旧版本的SDK,别选太新的)
  • 如果是手动导入的SDK包,检查相关DLL文件有没有丢失,有没有被Unity标记为错误状态。

修正后的完整代码参考

加完using之后,你的代码可以整理成这样(结构更清晰):

using System.Threading.Tasks;
using Firebase.Storage;
using UnityEngine;

public class Gallery : MonoBehaviour
{
    // 假设你的activeIndex和SaveLoad.imageTexture已经正确定义
    public int activeIndex;

    public void UploadImageToFirebase()
    {
        // 获取默认Firebase实例的Storage引用
        FirebaseStorage storage = FirebaseStorage.DefaultInstance;
        StorageReference storageRef = storage.GetReferenceFromUrl("gs://AR-Festival-2018.appspot.com");
        
        // 将纹理转为PNG字节数组
        byte[] imageBytes = SaveLoad.imageTexture[activeIndex].EncodeToPNG();
        
        // 目标文件的存储引用
        StorageReference targetRef = storageRef.Child("images/rivers.jpg");
        
        // 异步上传字节数据
        targetRef.PutBytesAsync(imageBytes)
            .ContinueWith((Task<StorageMetadata> task) => {
                if (task.IsFaulted || task.IsCanceled)
                {
                    Debug.LogError("上传出错:" + task.Exception.ToString());
                }
                else
                {
                    StorageMetadata metadata = task.Result;
                    string downloadUrl = metadata.DownloadUrl.ToString();
                    Debug.Log("上传完成!");
                    Debug.Log("下载链接:" + downloadUrl);
                }
            });
    }
}

额外小提示

  • Unity 2017.3版本偏老,如果还是有奇怪的错误,可以试试清理Unity缓存(Edit > Clear All PlayerPrefs),然后重启Unity再试。
  • 确保你的Firebase项目配置文件(google-services.json)已经正确导入到Unity项目的Assets根目录下,这是Firebase功能正常运行的前提哦。

内容的提问来源于stack exchange,提问作者user6748005

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:32:40