1

Unity のアセット バンドルに問題があります。同じ名前で拡張子が異なる複数のアセットを含むバンドルがあります (bonus.png Bonus.prefab など)。

ボーナスという名前のプレハブをインスタンス化しようとすると、assetBundle.LoadAssets("bonus") 関数は、通常のようにゲーム オブジェクトを返しません。これは、同じ名前のアセットが複数ある場合にのみ発生しているようです。

AssetBundleRequest request = assetBundle.LoadAssetAsync(m_ObjectsToPool[i].m_Name, typeof(GameObject));
        yield return request;
        GameObject prefab = request.asset as GameObject;

        if (prefab != null)
        {
            PoolManager.Instance.AddLoadedPrefabToPool(prefab, m_ObjectsToPool[i].m_Name, null, m_ObjectsToPool[i].m_Amount);
        }

しかし、loadallassets(typeof(GameObject)) を呼び出してから for ループを使用すると、アセットを見つけて適切にインスタンス化できます。しかし、それはただの汚い方法です。

4

3 に答える 3

1

同じ名前の異なるタイプのアセットをロードできるはずです。

Unity のどのバージョンを使用していますか?

上記のコードは正しいように見えます (LoadAssetAsync? というタイプミスを除いて)。

以下はUnity 4.5.5f1で私のために働いた

  1. Unity Docsから Unity ビルドに ExportAssetBundles.cs コンテキスト メニュー スクリプトを追加しました

  2. エクスポートするものを作成しました

    • JPGを見つけてドラッグし、「marble.jpg」という名前を付けました
    • 「大理石」という名前の立方体を作成し、それをプロジェクトにドラッグしてプレハブを作成しました
    • 「大理石」という名前のマテリアルを作成し、jpgを追加して立方体にドラッグし、適用を押しました。
  3. 「Build Assets From Selection - Track Selection」を使用して 3 つすべてをハイライトし、エクスポートしたアセット バンドルを「c:\temp\marble.unity3d」に保存しました。

  4. 開始時にそのアセット バンドルをロードするスクリプトを追加しました (あなたのものと同様):

    using UnityEngine;
    using System.Collections;
    
    public class BundleTest : MonoBehaviour {
    
      void Start () {
        StartCoroutine(StartCo());  
      }
    
      IEnumerator StartCo() {
        string url = "file://c:\\temp\\marble.unity3d";
        WWW www = new WWW(url);
        yield return www;
    
        AssetBundle bundle = www.assetBundle;
        AssetBundleRequest request = bundle.LoadAsync ("marble", typeof(GameObject));
        yield return request;
    
        Debug.Log ("loaded asset: " + request.asset.ToString());
        GameObject prefab = request.asset as GameObject;
    
        GameObject go = (GameObject)Instantiate(prefab);
        bundle.Unload(false);
        www.Dispose();
      }
    }
    
  5. Unity を実行し、ゲーム オブジェクトが正しく表示されることを確認しました。

于 2014-12-17T13:13:32.353 に答える