unity 场景 切换 笔记
2017-03-17 17:06
302 查看
参考: http://www.xuanyusong.com/archives/1427
异步加载 有进度
private float fps = 10.0f;
private float time;
//一组动画的贴图,在编辑器中赋值。
public Texture2D[] animations;
private int nowFram;
//异步对象
AsyncOperation async;
//读取场景的进度,它的取值范围在0 - 1 之间。
int progress = 0;
void Start()
{
//在这里开启协程
StartCoroutine(loadScene());
}
IEnumerator loadScene()
{
//异步读取场景。
//Globe.loadName 就是A场景中需要读取的C场景名称。
async = Application.LoadLevelAsync(Globe.loadName);
//读取完毕后返回, 系统会自动进入C场景
yield return async;
}
void OnGUI()
{
//因为在异步读取场景,
//所以这里我们可以刷新UI
DrawAnimation(animations);
}
void Update()
{
//在这里计算读取的进度,
//progress 的取值范围在0.1 - 1之间, 但是它不会等于1
//也就是说progress可能是0.9的时候就直接进入新场景了
//所以在写进度条的时候需要注意一下。
//为了计算百分比 所以直接乘以100即可
progress = (int)(async.progress *100);
//有了读取进度的数值
Debug.Log("xuanyusong" +progress);
}
//这是一个简单绘制2D动画的方法
void DrawAnimation(Texture2D[] tex)
{
time += Time.deltaTime;
if(time >= 1.0 / fps){
nowFram++;
time = 0;
if(nowFram >= tex.Length)
{
nowFram = 0;
}
}
GUI.DrawTexture(new Rect( 100,100,40,60) ,tex[nowFram] );
//在这里显示读取的进度。
GUI.Label(new Rect( 100,180,300,60), "lOADING!!!!!" + progress);
}
2.在加载大型场景的时候,如果将其中的一部分 Gameobject 不显示 即将其之前的√ 去掉 场景加载时就不会进行渲染
之后在脚本中的Awake中进行加载 找到对应的GameObject 的异步显示 可使用协程来实现 这样就可以每帧进行加载
不会在一瞬间占用大量的内存
3。也可以使用Instantiate 进行动态创建添加
异步加载 有进度
private float fps = 10.0f;
private float time;
//一组动画的贴图,在编辑器中赋值。
public Texture2D[] animations;
private int nowFram;
//异步对象
AsyncOperation async;
//读取场景的进度,它的取值范围在0 - 1 之间。
int progress = 0;
void Start()
{
//在这里开启协程
StartCoroutine(loadScene());
}
IEnumerator loadScene()
{
//异步读取场景。
//Globe.loadName 就是A场景中需要读取的C场景名称。
async = Application.LoadLevelAsync(Globe.loadName);
//读取完毕后返回, 系统会自动进入C场景
yield return async;
}
void OnGUI()
{
//因为在异步读取场景,
//所以这里我们可以刷新UI
DrawAnimation(animations);
}
void Update()
{
//在这里计算读取的进度,
//progress 的取值范围在0.1 - 1之间, 但是它不会等于1
//也就是说progress可能是0.9的时候就直接进入新场景了
//所以在写进度条的时候需要注意一下。
//为了计算百分比 所以直接乘以100即可
progress = (int)(async.progress *100);
//有了读取进度的数值
Debug.Log("xuanyusong" +progress);
}
//这是一个简单绘制2D动画的方法
void DrawAnimation(Texture2D[] tex)
{
time += Time.deltaTime;
if(time >= 1.0 / fps){
nowFram++;
time = 0;
if(nowFram >= tex.Length)
{
nowFram = 0;
}
}
GUI.DrawTexture(new Rect( 100,100,40,60) ,tex[nowFram] );
//在这里显示读取的进度。
GUI.Label(new Rect( 100,180,300,60), "lOADING!!!!!" + progress);
}
2.在加载大型场景的时候,如果将其中的一部分 Gameobject 不显示 即将其之前的√ 去掉 场景加载时就不会进行渲染
之后在脚本中的Awake中进行加载 找到对应的GameObject 的异步显示 可使用协程来实现 这样就可以每帧进行加载
不会在一瞬间占用大量的内存
3。也可以使用Instantiate 进行动态创建添加
相关文章推荐
- Unity--无缝场景切换
- unity基础开发----切换场景、游戏视图(Game View)、iphone优化
- Unity3D笔记 愤怒的小鸟<一>场景切换
- [cocos2dx笔记007]一个自定义场景切换的实例
- Cocos2dx 学习笔记整理----场景切换
- android+unity游戏开发基础之场景的切换
- 有关Unity 的一些 笔记之场景
- unity基础开发----切换场景、游戏视图(Game View)、iphone优化
- 【Cocos2d-x 3.0学习笔记】场景切换
- Cocos2d-x学习笔记(八)场景切换原理分析
- cocos2d-x学习笔记04:CCScene场景切换
- cocos2d-x学习笔记(二)--场景切换
- cocos2d-x学习笔记4 场景的切换
- Unity实现 场景切换 音乐不断
- Cocos2d-x学习笔记(五)实例——场景切换
- Unity 利用协同程序实现场景切换时加载进度的监控
- 【Cocos2D-X游戏开发笔记2】自定义场景及场景切换效果
- Unity场景切换时传递数据
- cocos2d-x-3.0rc1 学习笔记3(场景切换)
- Cocos2d-x学习笔记(四)-------->场景切换