0

AssetBundleManagerUnity 5.3 プロジェクトで APIを使用しています。

私のセットアップ: 2 つのシーンがあります。1 つのメイン シーンと、マルチ シーンとしてメイン シーンにロードされる別のシーン。現在、エディターで正常に動作しています。メイン シーンを Android デバイスにビルドしたかったのですが、ロード レベル ボタンをクリックしても何も起こりません。AssetBundlesルートのフォルダーに配置されているアセットバンドルのビルドを既に作成しました。これは私がドキュメントで読んだものであり、何が正しいのでしょうか?

ここに画像の説明を入力

アセットバンドル ファイルを別の場所に配置する必要がありますか? AssetBundleManagerプラグインの例から取得したこのスクリプトを使用しています。

using UnityEngine;
using System.Collections;
using AssetBundles;
using UnityEngine.SceneManagement;

public class LoadScenes : MonoBehaviour
{

public string sceneAssetBundle;
public string sceneName;
public bool load;
public bool destroy;
string curLevel;

// Use this for initialization
IEnumerator Start ()
{   
    yield return StartCoroutine(Initialize() );

    // Load level.
    //yield return StartCoroutine(InitializeLevelAsync (sceneName, true) );
}

void Update(){
    if (load) {
        load = false;
        // Load level.
        StartCoroutine(InitializeLevelAsync (sceneName, true) );
    }

    if (destroy) {
        destroy = false;
        SceneManager.UnloadScene(sceneName);
    }
}

public void loadLevel(string level){
    curLevel = level;
    StartCoroutine (InitializeLevelAsync (level, true));
}

public void unloadLevel(){
    SceneManager.UnloadScene(curLevel);
}

// Initialize the downloading url and AssetBundleManifest object.
protected IEnumerator Initialize()
{
    // Don't destroy this gameObject as we depend on it to run the loading script.
    DontDestroyOnLoad(gameObject);

    // With this code, when in-editor or using a development builds: Always use the AssetBundle Server
    // (This is very dependent on the production workflow of the project. 
    //  Another approach would be to make this configurable in the standalone player.)
    #if DEVELOPMENT_BUILD || UNITY_EDITOR
    AssetBundleManager.SetDevelopmentAssetBundleServer ();
    #else
    // Use the following code if AssetBundles are embedded in the project for example via StreamingAssets folder etc:
    AssetBundleManager.SetSourceAssetBundleURL(Application.dataPath + "/");
    // Or customize the URL based on your deployment or configuration
    //AssetBundleManager.SetSourceAssetBundleURL("http://www.MyWebsite/MyAssetBundles");
    #endif

    // Initialize AssetBundleManifest which loads the AssetBundleManifest object.
    var request = AssetBundleManager.Initialize();

    if (request != null)
        yield return StartCoroutine(request);
}

protected IEnumerator InitializeLevelAsync (string levelName, bool isAdditive)
{
    // This is simply to get the elapsed time for this phase of AssetLoading.
    float startTime = Time.realtimeSinceStartup;

    // Load level from assetBundle.
    AssetBundleLoadOperation request = AssetBundleManager.LoadLevelAsync(sceneAssetBundle, levelName, isAdditive);
    if (request == null)
        yield break;
    yield return StartCoroutine(request);

    // Calculate and display the elapsed time.
    float elapsedTime = Time.realtimeSinceStartup - startTime;
    Debug.Log("Finished loading scene " + levelName + " in " + elapsedTime + " seconds" );
}
}
4

2 に答える 2