位置: 编程技术 - 正文
推荐整理分享基于web的AssetBundle的研究(基于web的旅游网站毕业设计),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:基于web的蛋糕订购系统,基于web的管理系统用什么语言,基于web的毕业设计题目,基于web的农产品商城平台设计与实现,基于web的停车场管理系统,基于web的蛋糕订购系统,基于web的安装程序是什么意思,基于web的管理系统用什么语言,内容如对您有帮助,希望把文章链接给更多的朋友!
原因:(1)在实际开发中如果场景很大,加载时间会比较花费时间,尤其是在unity的web项目中比较明显。比如我做的幼儿园项目web版在网络比较慢的情况下打开一次要花费半个小时左右,这就很浪费时间。而用AssetBundle的流加载方式,通过把预设导出成.assetBundle文件,在项目运行过程中逐步加载克隆将大大缩短加载时间,有利于项目完美运行。下个项目大庆展馆我们考虑用这项技术。
(2)AssetBundle可以将Prefab封装起来,预设身上的游戏组件如材质脚本在封装成AssetBundle后,我们只需要Instantiate就可以放在游戏中使用,并且身上的脚本材质等依然存在。
实现方式:
1. 导出.AssetBundle
[MenuItem("Assets/Build AssetBundle FromSelection")]
staticvoid ExportResourceRGB2()
{
//打开保存面板,获得用户选择的路径
stringpath = EditorUtility.SaveFilePanel("Save Resource",Application.dataPath,"NewResource", "unity3d");
if(path.Length != 0)
{
//选择的要保存的对象
Object[]selection = Selection.GetFiltered(typeof(Object),SelectionMode.DeepAssets);
//打包
BuildPipeline.BuildAssetBundle(Selection.activeObject,selection, path, BuildAssetBundleOptions.CollectDependencies |BuildAssetBundleOptions.CompleteAssets, BuildTarget.StandaloneWindows);
}
}
2. 加载:
void Start () {
bundlePath=" StartCoroutine("downLoadAssetBundle");
}
IEnumeratordownLoadAssetBundle()
{
asset=new WWW(bundlePath);
yield return asset;
if(rateText!=null)
rateText.text=asset.progress.ToString();
AssetBundlebundle=asset.assetBundle;
Instantiate(bundle.Load("plane"));
bundle.Unload(false);
}
3. 缺点:(1)目前我觉得缺点是物体之间的关联度不好调整,如在一个物体中声明一个物体,public GameObject wuti;调用不是很方便,必须通过GameObject.Find()/GameObject.FindObjectWithTag()方法获取(2)模型的Prefab一个个导出所占大小比较小,叠加导出时容量比较大,不利于网络资源加载
Unity广度优先搜索子物体 深度优先搜索相对简单一点,就不说了,不过广度也有其用处,比如想找到一个人物骨骼的一个节点,在比较浅的层级时,用深度搜索可能是很浪费的
Unity3D AsssetBundle加载效率比较 首先,简要介绍一下加载AssetBundle的主要两种方式,分别是newWWW(url)和WWW.LoadFromCacheOrDownload,两种方式的具体用法,自己查官方API,这里不再叙述newWWW是
unity3d shader之Julia集和Mandelbrot集绘制美丽图案 (二) 之前写过一篇Mandelbrot集的代码在这里这次主要写Julia集的Mandelbrot集内的每一个点都对应了一个连通的Julia集,Mandelbrot集合外的点则对应了不连通的Julia
标签: 基于web的旅游网站毕业设计
本文链接地址:https://www.jiuchutong.com/biancheng/378803.html 转载请保留说明!友情链接: 武汉网站建设