2015-06-17 5 views
-1

я пытаюсь загрузить уже созданный объект FBX на сцену во время исполненияДинамическая загрузка FBX во время выполнения

Мой код здесь

void Start() 
{ 
    string url = "http://everyday3d.com/unity3d/obj/monkey.obj"; 
    StartCoroutine(DownloadAssetBundle<GameObject>("monkey", url, 1)); 
} 


public IEnumerator DownloadAssetBundle<T>(string asset, string url, int version) where T : UnityEngine.Object 
{ 
    using(WWW www = WWW.LoadFromCacheOrDownload (url, version)) 
    { 
     yield return www; 
     if (www.error != null) 
      throw new Exception(www.error); 
     AssetBundle assetBundle = www.assetBundle; 

     var Object = assetBundle.LoadAsset(asset, typeof(T)); 
     Instantiate(Object); 
     assetBundle.Unload(false); 
    } 
} 

И у меня есть ошибка

NullReferenceException: Object reference not set to an instance of an object 
Loader+<DownloadAssetBundle>c__Iterator0`1[UnityEngine.GameObject].MoveNext() (at Assets/Script/Loader.cs:24) 

Я нашел для чего это, потому что www.assetBundle == null Любые идеи для решения этой проблемы есть? Читая форум, я понял, что мой код такой как нормальный.

+0

ULR, например, им пытаются использовать файл: /// C: /test.FBX –

+2

его, потому что ваш код, очевидно, для загрузки пакет активов, а не отдельный актив, как вы пытаетесь сделать. Также '.obj' не является' .fbx' – maksymiuk

+0

Unity [комплекты активов] (http://docs.unity3d.com/Manual/AssetBundlesIntro.html) - очень специфический тип предварительно созданного файла. Кажется, вы не загружаете правильный тип файла для операций, которые вы используете. – rutter

ответ

0

его, поскольку ваш код, очевидно, предназначен для загрузки пакета активов, а не отдельного актива, как вы пытаетесь сделать. Тоже .obj не является .fbx

Вы пробовали просто:

WWW www = new WWW ("http://everyday3d.com/unity3d/obj/monkey.obj"); 
yield return www; 
Смежные вопросы