C# 如何从android本地文件夹加载assetBundle?

C# 如何从android本地文件夹加载assetBundle?,c#,unity3d,C#,Unity3d,我正在尝试从Unity中加载AssetBundle表单Android文件夹。 但它不起作用 我认为URL是错误的 多次更改URL,推荐或指定Unity文档,但每次都失败 这是我的密码 public string BundleURL; public int version; void Start() { CleanCache(); BundleURL = "file://"+Application.persistentDataPat

我正在尝试从Unity中加载AssetBundle表单Android文件夹。 但它不起作用

我认为URL是错误的

多次更改URL,推荐或指定Unity文档,但每次都失败

这是我的密码

    public string BundleURL;
    public int version;

    void Start()
    {
        CleanCache();
        BundleURL = "file://"+Application.persistentDataPath + " /BundleTest";

        StartCoroutine(LoadAssetBundle(BundleURL));
        version = 0;
    }
我认为BundleURL是错的或有问题

    IEnumerator LoadAssetBundle(string BundleURL)
    {
        //BundleURL = "file://" + path ;
        GameObject obj;
        //ARLog.d ("LoadAssetBundle" + BundleURL);
        while (!Caching.ready)
            yield return null;
        using (WWW www = WWW.LoadFromCacheOrDownload(BundleURL, version))
        {
            yield return www;

            AssetBundle bundle = www.assetBundle;

            String[] mPath = bundle.GetAllAssetNames();
            String bundleName = null;

            if (bundleName != null)
            {
                AssetBundleRequest request = bundle.LoadAssetAsync(bundleName, typeof(GameObject));
                yield return request;

                obj = Instantiate(request.asset) as GameObject;

                bundle.Unload(false);
                www.Dispose();
            }
        } 
    }
}

我想要场景中的实例模型(来自Android中的BundelTest文件夹)

您在场景中还有一个额外的空间

BundleURL = "file://"+Application.persistentDataPath + " /BundleTest";
“/BundleTest”

对于通常的路径,您应该始终使用而不是手动连接字符串:

    BundleURL = Path.Combine(Application.persistentDataPath,"BundleTest");
这确保在生成的路径中自动使用相应atrget系统的正确路径分隔符(
/
\

请注意,
WWW
已经过时,而且没有那么快→你应该看看有一个如何使用它的例子

    public void IEnumerator LoadBundle()
    {
        var bundleLoadRequest = AssetBundle.LoadFromFileAsync(Path.Combine(Application.streamingAssetsPath, "BundleTest"));
        yield return bundleLoadRequest;

        var myLoadedAssetBundle = bundleLoadRequest.assetBundle;
        if (myLoadedAssetBundle == null)
        {
            Debug.Log("Failed to load AssetBundle!");
            yield break;
        }

        var assetLoadRequest = myLoadedAssetBundle.LoadAssetAsync<GameObject>("MyObject");
        yield return assetLoadRequest;

        GameObject prefab = assetLoadRequest.asset as GameObject;
        Instantiate(prefab);

        myLoadedAssetBundle.Unload(false);
    }

您不必使用
Dispose
,因为它是在
using
块的和处自动处理的。

您在其中有一个额外的空间

BundleURL = "file://"+Application.persistentDataPath + " /BundleTest";
“/BundleTest”

对于通常的路径,您应该始终使用而不是手动连接字符串:

    BundleURL = Path.Combine(Application.persistentDataPath,"BundleTest");
这确保在生成的路径中自动使用相应atrget系统的正确路径分隔符(
/
\

请注意,
WWW
已经过时,而且没有那么快&rightarrow;你应该看看有一个如何使用它的例子

    public void IEnumerator LoadBundle()
    {
        var bundleLoadRequest = AssetBundle.LoadFromFileAsync(Path.Combine(Application.streamingAssetsPath, "BundleTest"));
        yield return bundleLoadRequest;

        var myLoadedAssetBundle = bundleLoadRequest.assetBundle;
        if (myLoadedAssetBundle == null)
        {
            Debug.Log("Failed to load AssetBundle!");
            yield break;
        }

        var assetLoadRequest = myLoadedAssetBundle.LoadAssetAsync<GameObject>("MyObject");
        yield return assetLoadRequest;

        GameObject prefab = assetLoadRequest.asset as GameObject;
        Instantiate(prefab);

        myLoadedAssetBundle.Unload(false);
    }
您不必使用
Dispose
,因为它是在
使用
块的和处自动处理的