我将3d模型放入了资产捆绑包中,并将其存储在firebase存储器中。当应用运行时,我想从firebase加载3d模型,并且希望3d模型成为主相机的子代。但是不幸的是它不起作用。当我运行该应用程序时,我从控制台中的debug.log获取了存储参考URL,但没有下载任何内容,我也调试了代码,没有发现任何错误。这是我最后一年的项目,因此请感谢帮助
using Firebase.Storage;
using System.Threading.Tasks;
using System.Collections;
using UnityEngine;
using System;
using UnityEngine.Networking;
public class Loadmodel2 : MonoBehaviour
{
// Start is called before the first frame update
public GameObject test;
void Start()
{
FirebaseStorage storage = FirebaseStorage.DefaultInstance;
Firebase.Storage.StorageReference reference =
storage.GetReferenceFromUrl("gs://fit-union-221609.appspot.com/assettest1/myasset");
reference.GetDownloadUrlAsync().ContinueWith((Task<Uri> task) => {
if (!task.IsFaulted && !task.IsCanceled)
{
Debug.Log("Download URL: " + task.Result);
// ... now download the file via WWW or UnityWebRequest.
StartCoroutine(Loadcoroutine(task.Result));
}
});
}
IEnumerator Loadcoroutine(Uri uri)
{
using (var www = UnityWebRequestAssetBundle.GetAssetBundle(uri))
{
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(www);
var mya1 = bundle.LoadAssetAsync<GameObject>("BarbarianVariant");
yield return mya1;
var obj = Instantiate((GameObject)mya1.asset);
obj.transform.parent = test.transform;
}
}
}
}
答案 0 :(得分:1)
根据Google文档:
您的文件存储在Google Cloud Storage存储桶中。该存储桶中的文件以分层结构显示,就像您本地硬盘上的文件系统或Firebase Realtime数据库中的数据一样。通过创建对文件的引用,您的应用可以访问该文件。这些引用随后可用于上载或下载数据,获取或更新元数据或删除文件。引用可以指向特定文件,也可以指向层次结构中的更高级别的节点。
您引用“ gs://fit-union-221609.appspot.com/assettest1/myasset”的代码似乎未引用分层云存储桶。考虑更改为HTTPs引用,或从您的Google控制台获取正式的gs层次结构。
此外,资产捆绑包通常具有应包含在URI中的文件扩展名。
经过我的进一步理解,看来gs URL是正确的。但是,查看屏幕快照,似乎未启用gameObject。这可能是问题所在。