我从.fbx文件创建了一个资产包。然后;我使用这段代码将它加载到一个非常简单的统一项目中
public class k : MonoBehaviour {
public string url;
// Use this for initialization
public string AssetName;
void Start()
{
}
IEnumerator DownloadAndCache(string bundleURL)
{
while (!Caching.ready)
yield return null;
using (WWW www = WWW.LoadFromCacheOrDownload(bundleURL, 1))
{
yield return www;
if (www.error != null)
throw new Exception("WWW download had an error:" + www.error);
AssetBundle bundle = www.assetBundle;
if (AssetName == "")
Instantiate(bundle.mainAsset);
else
Instantiate(bundle.LoadAsset(AssetName));
bundle.Unload(false);
}
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.D))
StartCoroutine(DownloadAndCache(url));
}
}
我不明白。由于我以下一种格式传递了有效的本地网址:
文件:/// C:/asset/robot.unity3d
请帮助
答案 0 :(得分:2)
具有unity3d扩展名的文件通常不是AssetBundle。
要拥有包含模型的AssetBundle,您必须:
Unity中的AssetBundle管理仍然是一个痛苦的过程,所以我建议你仔细阅读Guide to AssetBundles and Resources。
这里还有一个AssetBundleManager,但我发现它的代码很乱。 这是错误的,几乎不可能破译:我最终写了自己的,所以我不能真的建议你使用它(我把它链接起来,因为它将来会变得更好)。
答案 1 :(得分:1)
尝试调用bundle.GetAllAssetNames()以在尝试实例化任何内容之前查看包内的内容。
AssetBundle bundle = www.assetBundle;
foreach(var name in bundle.GetAllAssetNames()){
Debug.Log(name);
}
mainAsset可能为null,具体取决于AssetBundle的创建方式,所以也许这就是这里发生的事情,如果你尝试按名称加载资产,它是否会给你null异常?