您的位置:首页 > 编程语言 > ASP

(1)Assetbundle基于Asp3.Net动态加载模型

2016-07-11 10:29 633 查看
最近项目模型量比较大,所以我考虑使用动态加载,然后就想到了Assetbundle吗,之前有用过,但是不怎么详细,所以这次项目遇到很多坑,遇到的问题记录一下方便自己和别人,有问题的地方–哈哈菜鸟请轻喷。

先介绍一下环境,也就是ASP.net win 的虚拟主机,配置 一般般挂个网页就可以。

unity我用的版本是5.3f1.

关于打包步骤我就不详细介绍了直接贴代码。

[MenuItem("Custom Editor/Create AssetBunldes ALL")]
static void CreateAssetBunldesALL()
{

Caching.CleanCache();

string Path = "e://all.assetbundle";

Object[] SelectedAsset = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);

foreach (Object obj in SelectedAsset)
{
Debug.Log("Create AssetBunldes name :" + obj);
}

//这里注意第二个参数就行
if (BuildPipeline.BuildAssetBundle(null, SelectedAsset, Path, BuildAssetBundleOptions.CollectDependencies))
{
AssetDatabase.Refresh();
}
else
{

}
}


还是说一下5.0打包依赖 我只是将模型 FBX和材质球在assetbundle勾上 all 后边的还是none

打包完成 是512kb

然后使用Ftp软件  把  这个资源包传到asp.net服务器


然后 回到unity 中 代码加载 。直接上代码

IEnumerator LoadALLGameObject(string path)
{
print(path);
WWW bundle = new WWW("http://www.xxxx.cn/all.assetbundle");
yield return bundle;
if (bundle.isDone)
{
//     print(bundle.assetBundle.name);
//通过Prefab的名称把他们都读取出来
Object obj0 = bundle.assetBundle.LoadAsset("pl01", typeof(Object));
//    Object obj1 = bundle.assetBundle.LoadAsset("pl02", typeof(Object));

//加载到游戏中
yield return Instantiate(obj0);
//    yield return Instantiate(obj1);
bundle.assetBundle.Unload(false);
}
}


效果对比

运行前:



运行后:



总结:

1、在UNITY里点击editor 把HOST url 改成自己服务器的。



2、服务器的MiMe对应要添加


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: