开发者社区> 最美的回忆> 正文

Unity 场景分页插件 World Streamer 支持无限大地图的解决方案(二)

简介:
+关注继续查看
Terrain Streaming
可以用WorldCreator创建Tile地形,然后用WorldStreamer实现分块地图。比如10000*10000(16平方公里) 的地形,需要1000*1000的100个地块。如果每次加载9个格子,那么同时载入的地块大小为3000*3000大小——比一次加载100000*10000要省掉 90%的数据——如果直接加载10000*10000估计Unity要跪了。似乎也可以500*500,加载25个地块(保证1000左右的视野),总体数量要更小一些,但是地图分块却更多了(400个)。
 
(一)基础设置
如果想要分页读取Terrain,需要先把大块Terrain处理成小块,我使用的是WorldCreator Pro(189美金,巨贵无比)可以直接搞定这一步。
下面就需要思考了:
(1)不使用MeshTerrain作为低模LOD,那么推荐3*3地表块,每个地表块的Size应该比FOV的最远距离高个10%左右,以尽量使玩家不会看到地形加载的过程。
(2)使用Ring模式和低模LOG,可以使用较多的Load Range。
(3)纯MeshTerrain,通常用于移动游戏。
 
接下来的例子中我设置了一个6*6*500*500的地图分块,每个分块是一个500*500的Unity Terrain
 
 
注意每个分块的位置,应该是500的正数倍。
 
Streamer设置:
通常Terrain作为Major Streamer。如果还需要模型Terrain,那么其将设置为Minor Streamer,因为Major只能有一个。
把指定的SceneCollection Prefab赋值给Streamer,就完成了Streamer与Scene Clips之间的联动。
 
如果使用Unity Terrain,需要把Terrain Neighbour脚本添加到MajorStreamer对象,并关联他们。
 
(二)使用RingStreaming 和 MeshTerrain 作为Terrain的LOD
首先你需要一个插件叫做Terrain To Mesh(https://www.assetstore.unity3d.com/cn/#!/content/47276)有钱的请支持正版,没钱的可以去淘宝买个盗版……
这个后期效率更不上的时候,可以搞一搞:).前期先不弄了。
这段官方说了一堆废话,其实关键就是
MajorStreamer,不设置Ring Streamer,读取范围是 0~N
MinorStreamer,设置RingSteamer,外圈读取范围是0~M(M>N),内圈起始范围设置为N+1,确保外圈实际范围是N+1~M。
也就是外圈低模和内圈高模,加起来是完整的,需要读取的地块。
 
(三)UnityTerrain优化议题
使用RingStreaming和低模Terrain,烘焙好的树木
看不见的Terrain Disable掉(比如背后的)可以使用TerrainCullingSystem
使用优化的树木管理工具:Critias Tree System
如果TextureStreaming出现问题,可以去设置"Async Upload Time Slice" 和 "Async Upload Buffer Size"

本文转自jiahuafu博客园博客,原文链接http://www.cnblogs.com/jiahuafu/p/8287235.html如需转载请自行联系原作者

jiahuafu

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件
一、Mybatis框架 1、mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
1521 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29551 0
推荐一款Mybatis分页插件
推荐一款Mybatis分页插件 以前也写过一篇博文介绍Mybatis的插件,以及如何通过Mybatis的插件功能实现一个自定义的分页插件,但是那个插件的侵入性是比较大的。前段时间遇到了一款开源的Mybatis分页插件,叫PageHelper,github地址是https://github.com/pagehelper/Mybatis-PageHelper,其原理是通过ThreadLocal来存放分页信息,从而可以做到在Service层实现无侵入性的Mybatis分页。
1665 0
jquery插件整理篇(五)分页插件
(1)jQuery Pagination jQuery分页插件jQuery Pagination 热点图书:www.hotbook.cn (2)pager jQuery plug-in jQuery分页插件。
604 0
Mybatis分页插件PageHelper-5.1.1
Mybatis分页插件PageHelper-5.1.1
3421 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20908 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23609 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
20928 0
2286
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载