C# 运行时动态加载FBX
我试图在运行时将已创建的FBX对象加载到场景中 我的代码在这里C# 运行时动态加载FBX,c#,unity3d,C#,Unity3d,我试图在运行时将已创建的FBX对象加载到场景中 我的代码在这里 void Start() { string url = "http://everyday3d.com/unity3d/obj/monkey.obj"; StartCoroutine(DownloadAssetBundle<GameObject>("monkey", url, 1)); } public IEnumerator DownloadAssetBundle<T>(string as
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);
}
}
void Start()
{
字符串url=”http://everyday3d.com/unity3d/obj/monkey.obj";
Start例程(下载资产包(“monkey”,url,1));
}
public IEnumerator下载AssetBundle(字符串资产、字符串url、int版本),其中T:UnityEngine.Object
{
使用(WWW=WWW.LoadFromCacheOrDownload(url,版本))
{
收益率;
如果(www.error!=null)
抛出新异常(www.error);
资产组合资产组合=www.AssetBundle;
var Object=assetBundle.LoadAsset(资产,类型(T));
实例化(对象);
资产绑定卸载(假);
}
}
我有个错误
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)
NullReferenceException:对象引用未设置为对象的实例
Loader+c__迭代器0`1[UnityEngine.GameObject].MoveNext()(位于Assets/Script/Loader.cs:24)
我发现了它是什么,因为www.assetBundle==null
你有什么解决这个问题的办法吗?阅读论坛时,我意识到我的代码是正常的。这是因为你的代码显然是用于下载资产包,而不是你试图下载的单个资产。另外,
.obj
不是.fbx
您是否尝试过:
WWW www = new WWW ("http://everyday3d.com/unity3d/obj/monkey.obj");
yield return www;
例如,我尝试使用file:///C:/test.FBXits 因为您的代码显然是用于下载一个资产包,而不是您试图下载的单个资产。另外,
.obj
不是。fbx
Unity是一种非常特殊的预构建文件。您似乎没有为正在使用的操作加载正确的文件类型。好的,我如何解决我的问题?要建立项目的加载模型吗?非常感谢