Unity3D——异步加载游戏场景loading界面的开发!
2014-06-18 11:02
417 查看
最近在开始研究整个项目的开发!毕竟针对一些的开发,对我感觉没有整体感。所以就打算通过查看整体的开发的源代码来进一步的学习!所以这段时间都没有怎么更新博客!因为个人感觉还是要开发一个自己的游戏才行,山寨没关系,重要的是思想,感受一下那些大牛的设计的思想和代码的实现是一件很享受的事情!我推荐大家也可以这么做试试哈!
ok,废话不多说啦!我们开始吧!
首先还是要感谢雨松的Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)通过它的博客让我对这个场景的加载有了更深刻的感悟!
在我们的游戏开发过程中,场景间的交换是很正常的事情!但是并不是说我们实现了交换的效果就可以啦!我们在实现效果的同时也需要注意用户的体验和考虑机器的性能,同时也要考虑代码的优化,这样才能出更好的游戏。
在我们的开发过程中一般交换场景都是用Application.loadLevel("scenename");就可以轻松搞定啦!但是这种加载场景的方法只是适用于加载资源较少的场景,对于一个资源较大的场景的话,这个就容易造成界面的卡死,这样就对用户的体验感造成很大的伤害啦!
比如现在我们要从A场景加载到B场景,如果我们使用Application.LoadLevel("B");想象一下,这样的效果未免也太不理想啦!
所以我们在A,B的中见加入了一个新的场景,我们称之为loading场景,在俩种场景的过度,这样的感觉如何呢?首先你可以再loading场景中增加了很多花样比如可以显示一些游戏的提示语,可以显示不同的图片,来让用户度过这无聊的加载过渡期!想想一下,和上一个相比确实很不错啦!
貌似,感觉废话真的太多啦!好吧!直接上代码!
首先要定义一个全局的类,用来保存场景的名称!
我们利用这个类中的global_name来进行保存要跳转到的场景!
然后在A场景
这样我们就进入loading场景啦!进入到加载的界面中来啦!下面我们需要通过loading 场景来加载B场景啦!
ok,主体代码已经呈现啦!相信大家现在对异步加载有了自己的理解了吧!原理很简单,就是调用协程stratCoroutine()来进行处理异步加载Application.loadLevelAsync()。
哦,对了还有一个重要的步骤,就是你加载的场景必须在Untiy里注册
大体的步骤为file->BUild Setting ->Scences in Build 然后使用Add Current是加载当前场景,也可以直接将场景拖入!
最后提供下unity3d中文api.chm
谢谢大家的支持,你的支持是我前进的动力!
ok,废话不多说啦!我们开始吧!
首先还是要感谢雨松的Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)通过它的博客让我对这个场景的加载有了更深刻的感悟!
在我们的游戏开发过程中,场景间的交换是很正常的事情!但是并不是说我们实现了交换的效果就可以啦!我们在实现效果的同时也需要注意用户的体验和考虑机器的性能,同时也要考虑代码的优化,这样才能出更好的游戏。
在我们的开发过程中一般交换场景都是用Application.loadLevel("scenename");就可以轻松搞定啦!但是这种加载场景的方法只是适用于加载资源较少的场景,对于一个资源较大的场景的话,这个就容易造成界面的卡死,这样就对用户的体验感造成很大的伤害啦!
比如现在我们要从A场景加载到B场景,如果我们使用Application.LoadLevel("B");想象一下,这样的效果未免也太不理想啦!
所以我们在A,B的中见加入了一个新的场景,我们称之为loading场景,在俩种场景的过度,这样的感觉如何呢?首先你可以再loading场景中增加了很多花样比如可以显示一些游戏的提示语,可以显示不同的图片,来让用户度过这无聊的加载过渡期!想想一下,和上一个相比确实很不错啦!
貌似,感觉废话真的太多啦!好吧!直接上代码!
首先要定义一个全局的类,用来保存场景的名称!
using UnityEngine; using SystemColliections; public class Global{ public static string global_name; }
我们利用这个类中的global_name来进行保存要跳转到的场景!
然后在A场景
using UnityEngine; using SystemColliections; public class A : MonoBehavious{ void Start() { } void Update() { } void OnGUI() { if(GuiLayout.Button("loading",GuiLayout.Width(80),GuiLayout.Height(40))) { //点击加载按钮后进入加载界面 Golbal.Load_name = "B"; Application.loadLevel("loading");//到加载界面B的场景 } } }
这样我们就进入loading场景啦!进入到加载的界面中来啦!下面我们需要通过loading 场景来加载B场景啦!
using UnityEngine; using SystemColliections; public class loadingScene : MonoBehavious{ private AsyneOperation async;//异步加载操作 int process;//加载的进度 void Start() { startCoroutine(loading());//利用协程来进行加载,也就是异步加载 } void Update() { //在这里我们可以实时的更新加载的进度主要通过 process = (int)(async.progress*100); } IEnumerator loading() { async = Application.LoadLevelAsync(Global.Load_name); yelid return ansyn; } void OnGUI() { //在这里可以对显示一些提示或者一些图片 显示图片可以用GUI.DrawTextTure();显示提示可以使用GUI.Label(); } }
ok,主体代码已经呈现啦!相信大家现在对异步加载有了自己的理解了吧!原理很简单,就是调用协程stratCoroutine()来进行处理异步加载Application.loadLevelAsync()。
哦,对了还有一个重要的步骤,就是你加载的场景必须在Untiy里注册
大体的步骤为file->BUild Setting ->Scences in Build 然后使用Add Current是加载当前场景,也可以直接将场景拖入!
最后提供下unity3d中文api.chm
谢谢大家的支持,你的支持是我前进的动力!
相关文章推荐
- Unity3D——异步加载游戏场景loading界面的开发
- 【Unity3D游戏开发】NGUI之渐变加载到100%的Loading场景进度条 (一)
- 玲珑杯Unity开发心得——进度条界面(异步加载游戏场景)
- 【Unity3D 打斗游戏开发】之二 异步加载场景
- Unity3D异步加载游戏场景
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- unity3d学习笔记(十五)--利用Loading界面异步过渡游戏场景
- Unity3D学习之异步加载游戏场景与异步加载游戏资源进度条
- (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- Unity3D之异步加载游戏场景中关于进度条显示
- 利用Loading界面异步过渡游戏场景
- [Unity3D]异步加载游戏场景与异步加载游戏资源进度条
- (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- cocos2d-x游戏开发(十五)游戏加载动画loading界面
- cocos2d-x游戏开发(十五)游戏加载动画loading界面
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- cocos2d-x游戏开发(十五)游戏加载动画loading界面
- cocos2d-x游戏开发(十五)游戏加载动画loading界面
- Unity3D异步加载游戏场景
- unity3d实现Loading进度条异步加载场景