####0:讨论群
qq群号:390313628 unity 4.6 版本运行
Demo源码:http://git.oschina.net/liyonghelpme/unityRpg qq群:390313628
####1.问题 对于比较大的场景来讲,一次性加载进内存,缺点是内存占用较大,加载时间较长,优点实现简单,后续游戏会比较流畅。 但是对于一些特别复杂的场景,场景物件比较多的情况下,则需要引入流式的场景加载方法,根据玩家的时间和空间的局部性,只加载当前游戏的内容。
####2.系统设计 这样需要场景有多层设计,最简单的是两层设计。上层设计数据量少可以完整放到内存中,而细节设计则在需要的时候加载,例如这里参考火炬之光给出一个基于房间的设计思路。 火炬之光的大场景由一个个小的房间拼接而成,每个房间有两个连接处,对于入口和出口,只有一个连接处,而一个大场景即通过小房间的对应口的连接而构成。 参考一个关卡的设计:
#####2.1 存储 有了房间的概念之后,我们将关卡由哪些房间组成保存起来,也可以根据连接关系生成随机的房间。 对每个房间内部的结构,独立保存起来,针对火炬之光的房间来讲,火炬的放假都是由小元素块拼接而成,因此可以首先分离每个小元素块,接着存储房间内每个位置使用哪个小元素块。
#####2.2加载过程 加载的过程即首先判断玩家在哪个房间,接着预先加载临近的房间。 整个流程如下: 加载起始入口房间,需要等待整个入口加载结束才能进入游戏; 预先加载下一个房间,下一个房间采用每帧加载一个块的机制,等玩家靠近下一个房间的时候,已经加载结束了。 接着每当玩家进入一个新房间,则继续预先加载下一个房间。
具体代码可以参考Demo中的StreamLoadLevel.cs 和LevelConfigData.cs