У вас есть дополнительное место в
BundleURL = "file://"+Application.persistentDataPath + " /BundleTest";
в " /BundleTest"
!
Для путей в общем случае вы всегда должны использовать Path.Combine
вместоконкатенация строк вручную:
BundleURL = Path.Combine(Application.persistentDataPath,"BundleTest");
. Это гарантирует, что в результирующем пути автоматически используется правильный разделитель пути (/
или \
) для соответствующей системы atrget.
Чемобратите внимание, что WWW
устарел и не так быстро → вы должны взглянуть на AssetBundle.LoadFromFileAsync
, есть пример того, как его использовать
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);
}
Если выпредпочитаю вместо проверки синхронную загрузку AssetBundle.LoadFromFile
.
Еще одно замечание: если вы используете
using (WWW www = WWW.LoadFromCacheOrDownload(BundleURL, version))
{
....
}
, у вас нетиспользовать Dispose
в том виде, в каком он расположен в блоке using
автоматически.