UIFramework之Unity4.x 场景管理策略
来源:互联网 发布:10月经济数据 统计局 编辑:程序博客网 时间:2024/06/06 11:36
UIFramework之Unity4.x 场景管理策略
基本策略:一个初始场景+一个空场景。所有资源动态从Resource目录下加载或者从AssetBundle加载。
每个场景加载和销毁都有相似的处理过程,所以每个场景的主模块可以提取父类。
using UnityEngine;using System.Collections;public abstract class AbsSceneBaseUI : MonoBehaviour{ //when come in this Scene,this fuction must to execute; public virtual void InitSceneSnyc(object[] args) { } //when come in this Scene,this fuction must to execute; public virtual IEnumerator InitSceneAsnyc(object[] args) { yield return null; } //when come out this Scene,this fuction must to execute; public virtual void FinallizSceneSync() { } //when come out this Scene,this fuction must to execute; public virtual IEnumerator FinallizSceneAsync() { yield return null; } //Save system infomation public virtual void SaveSystemInfo() { }}
场景切换的过程:
①判断目标场景是否与当前场景是否一样,一样则return。
②开启Loading界面。
③执行加载前的回调函数。
④保存上一个场景中的信息。
⑤清理上一个场景。
⑥加载空场景x2。
⑦加载目标场景主模块。
⑧初始化主模块。
⑨执行加载完成后的回调。
⑩关闭Loading界面。
tips:Unity4.x里面加载一个新的场景会执行一些清理工作,但是会隔一个场景才会卸载内存。即加载下下个场景才会清理本场景的相关内存,所以在加载空场景的时候加载两次。
场景加载后也可执行Resources.UnloadUnusedAssets(); Unloads assets that are not used。
关于GC,GC会造成卡顿,所以一般可以使用定时器,每隔一段时间GC一次。
阅读全文
0 0
- UIFramework之Unity4.x 场景管理策略
- UIFramework之Unity4.x AssetBundle打包策略
- UIFramework之Unity4.x 资源加载策略
- UIFramework之Unity5.x AssetBundle打包策略
- UIFramework之单例滥用解决策略
- 使用Unity4.x构建游戏场景
- cocos2d-x源码剖析之场景管理
- UIFramework之功能分析
- UIFramework之功能分析
- Unity4.x AssetBundle内存管理 依赖打包逻辑 全套
- UIFramework之通用单例类Singleton
- UIFramework之数据表读取工具
- UIFramework之事件系统实现
- UIFramework之通用单例类Singleton
- UIFramework之UnityEngine.Debug封装
- UIFramework之数据表读取工具
- UIFramework之事件系统实现
- cocos2d-x之场景
- maven插件安装
- Java找出无权无向图的最短路径
- 程序员,如何从平庸走向理想?
- C语言,函数的调用过程(栈帧)
- android 4.3相册选取截图“无法加载图片”问题
- UIFramework之Unity4.x 场景管理策略
- Excel Sheet Column Number
- Libevent简介与使用
- spring发送邮件demo
- 【LeetCode】Binary Tree Preorder Traversal 解题报告
- 使用英特尔流式SIMD扩展优化动画模型的渲染流水线
- spring-ldap学习(二)
- 调用startActivityForResult,onActivityResult无响应的问题
- System.getProperty("catalina.home")+":"+System.getProperty("catalina.base")