Unity3D技术之加载游戏场景.docx
上传人:qw****27 上传时间:2024-09-11 格式:DOCX 页数:5 大小:1.1MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

Unity3D技术之加载游戏场景.docx

Unity3D技术之加载游戏场景.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Unity3D技术之加载游戏场景HYPERLINK"http://unity.gopedu.com/forum.php"Unity3D加载场景有很多种方式,做一些小的DEMO的时候往往是直接使用Application.LoadLevel或者Application.LoadLevelAsync加载场景,,但是这种办法不适合在真正的Unity3D开发中,因为前一种需要把所有的场景都打包,这在某些情况下是不现实的,比如开发页游,我们不可能把所有的场景都打包让用户下载,我们需要一个场景一个场景的加载,这时候我们可以使用WWW先通过HTTP加载场景到本地缓存,然后再使用Application.LoadLevel或者Application.LoadLevelAsync函数加载场景,使用这种加载方式,不仅不需要BuildSettings->AddCurrent处理加载场景,进度条的显示也更加容易,但是使用这种方式,需要先把场景打包成unity3d或者assetbundle文件,文章出处HYPERLINK"http://unity.gopedu.com/forum.php"【狗刨学习网】。先把测试场景搭建好,如图:然后添加一个C#脚本,取名UseWww.cs,全部代码如下:usingUnityEngine;usingSystem.Collections;publicclassUseWww:MonoBehaviour{publicUISliderprogressBar;publicUILabellblStatus;privateWWWwww;privatestringscenePath;voidAwake(){this.scenePath="file:///"+Application.dataPath+"/Assets/MainScene.unity3d";//开始加载场景this.StartCoroutine(this.BeginLoader());}voidUpdate(){if(this.www!=null&&this.progressBar!=null&&!this.www.isDone){//更新进度this.progressBar.value=this.www.progress;}}privateIEnumeratorBeginLoader(){this.lblStatus.text="场景加载中,请稍候。。。";//加载场景使用WWW.LoadFromCacheOrDownload,函数,这样加载完成才能使用Application.LoadLevel或者Application.LoadLevelAsyncthis.www=WWW.LoadFromCacheOrDownload(scenePath,Random.Range(0,100));yieldreturnthis.www;if(!string.IsNullOrEmpty(this.www.error)){this.lblStatus.text="场景加载出错!";}if(this.www.isDone){this.lblStatus.text="场景正在初始化,请等待。。。";Application.LoadLevelAsync("MainScene");}}}然后把这个脚本挂载到HYPERLINK"http://www.gopedu.com/"\t"_blank"游戏场景的一个对象中,设置好相关属性,如图:运行我们的游戏,可以查看进度条的加载情况,当加载完成,自动跳转到下一个场景中,如图:因为前面我封装了一个WWW加载管理器,我们可以直接拿来使用,我们建立一个新的C#脚本。UseWwwLoaderManager.cs,全部代码如下:usingUnityEngine;usingSystem.Collections.Generic;publicclassUseWwwLoaderManager:MonoBehaviour{publicUISliderprogressBar;publicUILabellblStatus;privatestringscenePath;voidAwake(){this.scenePath="file:///"+Application.dataPath+"/Assets/MainScene.unity3d";IList<WwwLoaderPath>pathList=newList<WwwLoaderPath>();pathList.Add(newWwwLoader