晓月_场景跳转 异步加载 Application.LoadLevelAsync
在游戏中,一般不可能把所有的资源模型都一次性加载完全。就算是无缝大世界天谕在进副本的时候也是会进行场景跳转的。那么在Unity3d中怎么比较好的实现场景之间的跳转呢?
首先我们捋捋思路:
1、应该有一个方法可以进行场景跳转,但是需要传递一个场景名字的参数。
2、有一个属性或者方法可以返回需要加载好场景的进度,这个值最好是浮点数,方便与UI进行百分比显示。
3、最好是能有一个属性或者方法控制是否场景加载完成之后自动跳转。(斗战神就可以按任意键进行手动跳转)
下面我们就来一一实现下:
1、首先是核心跳转方法:
Application.LoadLevel( ); //同步加载场景
Application.LoadLevelAsync(); //异步加载场景 推荐使用这个方法
方法参数可以是scence的名字或者是scence所对应的数字ID。但是由于在开发过程中场景可能会发生变动,所以ID会变化,所以一般参数选择scence的名字。注意,加载的场景必须要 add Current上去,不然找不到的。
2、场景是可以直接加载了,但是场景比较大的时候,不管是同步加载还是异步加载都会产生长时间的卡顿,这样极大的影响客户体验。这个时候我们采取一个新的思路,就是我们建立一个中间场景,而这个中间场景可以显示出我们真正需要加载场景的进度以及相关的原画,预览视频,音乐等。这样不会让玩家在等待的时间枯燥乏味。其中核心的方法就是
AsyncOperation asyncoperation = Application.LoadLevelAsync("");
asyncoperation.progress //这个属性就是需要加载场景的进度百分比 取值是 0.0f-1.0f 刚好可以配合UI显示。
3、场景加载好之后设置为手动跳转
也是上面的异步操作对象
直接设置为False就可以啦。这样当你监听鼠标或者键盘的时候再把这个属性改为true就可以进行跳转了。
一起学习的可以加我的Q:1970007869 加我进群
腾讯GAD游戏程序交流群:484290331