Как я могу проверить AssetBundle (DLC) локально на Android в Unity? - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь протестировать некоторые пакеты активов для игры, над которой я сейчас работаю.Я хочу использовать это, потому что я не хочу, чтобы игра занимала много места.Я до сих пор не знаю, как работают серверы и как загружать их туда.Я искал, как это сделать, и нашел здесь несколько полезных вещей: Загрузка данных AssetBundle (DLC) на телефон Android во время выполнения [UNITY] Но это что-то говорит о загрузке на сервер и прочее, но яхочу проверить это локально.Любая рекомендация?

После того, что сказал мне Реми, мой код выглядит так:

public class LoadFromFileExample : MonoBehaviour {

// Use this for initialization
void Start () {

    string fileName = "planes";
    var myLoadedAssetBundle = AssetBundle.LoadFromFile(Path.Combine(Application.streamingAssetsPath, fileName));
    if (myLoadedAssetBundle == null)
    {
        Debug.Log("Failed to load AssetBundle!");
        return;
    }
    var prefab = myLoadedAssetBundle.LoadAsset< GameObject > ("andy");
    Instantiate(prefab);

    myLoadedAssetBundle.Unload(false);

}

// Update is called once per frame
void Update () {

}
} 

Но он показывает следующую ошибку: Unable to open archive file: C:/Users/Chris/Desktop/myDLC/Assets/StreamingAssets/myassetBundle

Thisимя пакета активов

1 Ответ

0 голосов
/ 14 февраля 2019

Взгляните на AssetBundle.LoadFromFile .

Это позволяет вам загружать файл ваших активов из локального хранилища устройства.Это означает, что вам не нужно загружать / скачивать их в первую очередь.

это будет выглядеть примерно так:

string fileName = "fooAssetBundle";//name of the assetbundle you want to load

var myLoadedAssetBundle = AssetBundle.LoadFromFile(Path.Combine(Application.streamingAssetsPath, fileName));//Creates a filepath starting at the streamingAssetsPath and appends filename to it. 

var prefab = myLoadedAssetBundle.LoadAsset<GameObject>("MyObject");//Create a GameObject from the assetbundle
Instantiate(prefab);//instantiate the GameObject

myLoadedAssetBundle.Unload(false);//Unload the assetbundle from memory as it isn't used anymore

В приведенном выше примере используется Application.StreamingAssetsPath, но это может быть любой путь по вашему желанию, например Application.PersistentDataPath или внешнее хранилище.

...