无法将资源从firebase存储加载到unity

无法将资源从firebase存储加载到unity,firebase,unity3d,firebase-storage,unitywebrequest,Firebase,Unity3d,Firebase Storage,Unitywebrequest,我正在使用vuforia和unity创建一个增强现实应用程序。我已将我的assetbundle上载到firebase存储,我想检索其中保存的三维模型,并将其作为子对象加载到我的图像目标游戏对象上,但我无法检索它。我还安装了firebase unity sdk 使用Firebase; 使用Firebase。储存; 使用System.Threading.Tasks; 使用系统集合; 使用System.Collections.Generic; 使用System.IO; 使用UnityEngine; 使

我正在使用vuforia和unity创建一个增强现实应用程序。我已将我的assetbundle上载到firebase存储,我想检索其中保存的三维模型,并将其作为子对象加载到我的图像目标游戏对象上,但我无法检索它。我还安装了firebase unity sdk

使用Firebase;
使用Firebase。储存;
使用System.Threading.Tasks;
使用系统集合;
使用System.Collections.Generic;
使用System.IO;
使用UnityEngine;
使用制度;
使用UnityEngine。联网;
使用UnityEngine.UI;
公共类loadmodel2:单行为
{
公开游戏对象测试;
void Start()
{
FirebaseStorage=FirebaseStorage.DefaultInstance;
Firebase.Storage.StorageReference=Storage.GetReferenceFromUrl(“gs://fit-union-221609.appspot.com/assettest1/myasset”);
reference.GetDownloadUrlAsync().ContinueWith((任务)=>{
如果(!task.IsFaulted&&!task.IsCanceled)
{
Log(“下载URL:+task.Result”);
//…现在通过WWW或UnityWebRequest下载该文件。
start例程(Loadcoroutine());
}
});
}
IEnumerator Loadcoroutine()
{
string url=“gs://fit-union-221609.appspot.com/assettest1/myasset”;
WWW=新的WWW(url);
而(!www.isDone)
收益返回空;
AssetBundle myasset=www.AssetBundle;
GameObject mya1=myasset.LoadAsset(“野蛮人变体”)作为GameObject;
实例化(mya1).transform.parent=test.transform;
}
}

我创建了一个名为“myasset”的新资产捆绑包,并将其上载到firebase存储。我还将3d模型的名称更改为“Barbarian Variant”,删除了该空间


在这里,我在主摄像头中启用了loadmodel2脚本,并为我分配给主摄像头的测试游戏对象启用了loadmodel2脚本。您还可以在控制台中看到我得到的输出。首先,您的组件
loadmodel2
在检查器中被禁用,因此它的
Start
将永远不会被调用


我不是Firebase专家,但您首先使用
GetDownloadUrlAsync
,然后无论如何不要使用结果,而是启动一个新的
UnityWebRequest
从同一参考URL下载它

您不想使用从
task.Result
检索到的下载URL吗

start例程(Loadcoroutine(task.Result));
...
IEnumerator Loadcoroutine(Uri)
{
...
}

然后注意(过时)!=

您想要做的可能是使用(或在以前的版本中)

IEnumerator Loadcoroutine(Uri)
{
使用(var www=UnityWebRequestAssetBundle.GetAssetBundle(uri))
{
返回www.SendWebRequest();
如果(www.isNetworkError | | www.isHttpError)
{
Debug.Log(www.error);
}
其他的
{
AssetBundle bundle=DownloadHandlerAssetBundle.GetContent(www);
//确保此路径正确!好的,它至少应该以“Assets/…”开头
var mya1=bundle.LoadAssetAsync(“野蛮变种”);
收益率mya1;
var obj=实例化((游戏对象)mya1.asset);
obj.transform.parent=test.transform;
}
}
}

一般来说,我也会避免在
GameObject
名称中使用空格。

tnx作为回复,但我收到一个错误,说我无法将task.result从system.uri转换为stringYeah my bad。。我后来注意到,这是一个更新了答案的
任务。我在转换中得到一个错误,说对象不包含转换的防御,并且找不到接受object类型的第一个参数的可访问扩展方法转换,但即使删除了该行代码,它也应该从firebase下载我的模型,但它的没有下载对不起,我只是在电话上打字;)您必须将返回的
对象
强制转换为
游戏对象
。比如
var obj=实例化((游戏对象)mya1.asset)
var obj=(游戏对象)实例化(mya1.asset)应该是相同的afaik。你到底是如何跟踪下载的?你有错误吗?您是否尝试过一步一步地调试代码?这是我在控制台下载URL:UnityEngine.Debug:Log(Object)Loadmodel2:b_u1_0(Task`1)(at Assets/Loadmodel2.cs:25)System.Threading上得到的输出。\u ThreadPoolWaitCallback:PerformWaitCallback()