文档章节

unity 中大场景的流式加载

liyong2
 liyong2
发布于 2015/07/05 10:45
字数 578
阅读 2182
收藏 2

####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

输入图片说明

输入图片说明

输入图片说明

© 著作权归作者所有

liyong2

liyong2

粉丝 51
博文 196
码字总数 64732
作品 0
广州
程序员
私信 提问
Hololens 开发笔记——Audio Source

版权声明:本文版权归Jitwxs所有,欢迎转载,但未经作者同意必须保留原文链接。 https://blog.csdn.net/yuanlaijike/article/details/84250907 文章目录 音频资源 Unity中的音频文件分为两类...

Jitwxs
2018/11/19
0
0
Unity 2019.1 中文更新日志速览版

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhenghongzhi6/article/details/89370993 Unity2019.1已经正式发布,快来看看一些核心新功能吧! 完整版的中文...

关尔Manic
04/18
0
0
Blend4Web vs Unity: WebGL 的性能比较

编者序言 这篇文章最初在 Habrahabr发表 ,它是一个流行于 IT 专业人员的俄罗斯网站。这个主题主题引发了成千上万读者的兴趣并留下了几十个评论。我们很乐意的介绍这个关于 Unity WebGL 和 ...

yuri_s8s
2016/12/29
0
0
Blend4Web vs Unity: WebGL 的性能比较

编者序言 这篇文章最初在 Habrahabr发表 ,它是一个流行于 IT 专业人员的俄罗斯网站。这个主题主题引发了成千上万读者的兴趣并留下了几十个评论。我们很乐意的介绍这个关于 Unity WebGL 和 ...

yuri_s8s
2016/12/29
1
0
Hololens 开发笔记(8)——Audio Source

版权声明:本文版权归Jitwxs所有,欢迎转载,但未经作者同意必须保留原文链接。 https://blog.csdn.net/yuanlaijike/article/details/85202636 一、音频资源 Unity中的音频文件分为两类:原生...

Jitwxs
2018/12/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

定期批量改密,实现高效运维,保障口令安全

随着企业IT资产规模的不断增大,各类主机、应用系统的管理也变得愈加困难。 对于系统管理员来说,保证操作系统的密码安全是其重要工作,在需要维护众多的主机时,其面临的困境将是: 1、难以...

堡垒啊
44分钟前
5
0
怎样在磁盘上查找MySQL表的大小?这里有答案

导读 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎...

问题终结者
今天
6
0
jQuery load() 方法实现加载远程数据

jQuery load() 方法是简单但强大的 AJAX 方法。load() 方法从服务器加载数据,并把返回的数据放入被选元素中。 语法: $(selector).load(URL,data,callback);必需的 URL 参数规定您希望加载的...

前端老手
今天
5
0
Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存-2

问题 上一篇Spring Boot Cache + redis 设置有效时间和自动刷新缓存,时间支持在配置文件中配置,说了一种时间方式,直接扩展注解的Value值,如: @Override@Cacheable(value = "people#${s...

xiaolyuh
今天
14
0
怎样在磁盘上查找MySQL表的大小?这里有答案

我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应...

Linux就该这么学
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部