C# 如何从android本地文件夹加载assetBundle?
我正在尝试从Unity中加载AssetBundle表单Android文件夹。 但它不起作用 我认为URL是错误的 多次更改URL,推荐或指定Unity文档,但每次都失败 这是我的密码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
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
,因为它是在使用
块的和处自动处理的