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
相关文章
|
5月前
|
图形学 C++ C#
Unity插件开发全攻略:从零起步教你用C++扩展游戏功能,解锁Unity新玩法的详细步骤与实战技巧大公开
【8月更文挑战第31天】Unity 是一款功能强大的游戏开发引擎,支持多平台发布并拥有丰富的插件生态系统。本文介绍 Unity 插件开发基础,帮助读者从零开始编写自定义插件以扩展其功能。插件通常用 C++ 编写,通过 Mono C# 运行时调用,需在不同平台上编译。文中详细讲解了开发环境搭建、简单插件编写及在 Unity 中调用的方法,包括创建 C# 封装脚本和处理跨平台问题,助力开发者提升游戏开发效率。
533 0
|
6月前
|
开发者 图形学 iOS开发
掌握Unity的跨平台部署与发布秘籍,让你的游戏作品在多个平台上大放异彩——从基础设置到高级优化,深入解析一站式游戏开发解决方案的每一个细节,带你领略高效发布流程的魅力所在
【8月更文挑战第31天】跨平台游戏开发是当今游戏产业的热点,尤其在移动设备普及的背景下更为重要。作为领先的游戏开发引擎,Unity以其卓越的跨平台支持能力脱颖而出,能够将游戏轻松部署至iOS、Android、PC、Mac、Web及游戏主机等多个平台。本文通过杂文形式探讨Unity在各平台的部署与发布策略,并提供具体实例,涵盖项目设置、性能优化、打包流程及发布前准备等关键环节,助力开发者充分利用Unity的强大功能,实现多平台游戏开发。
212 0
|
6月前
|
图形学
Unity 不同Scene场景转换(简)
本文提供了Unity中实现场景转换的基本方法,包括编写传送脚本、创建传送门和玩家对象,并通过触发器实现玩家触碰传送门时切换到另一个场景的功能。
|
6月前
|
图形学
小功能⭐️Unity获取场景中所有物体
小功能⭐️Unity获取场景中所有物体
小功能⭐️Unity获取场景中所有物体
|
6月前
|
传感器 开发工具 vr&ar
ManoMotion⭐二、Unity手势识别插件简介,及效果录屏
ManoMotion⭐二、Unity手势识别插件简介,及效果录屏
|
6月前
|
Linux 开发工具 图形学
Unity下实现跨平台的RTMP推流|轻量级RTSP服务|RTMP播放|RTSP播放低延迟解决方案
自2018年起,我们成功实现了Unity环境下的低延迟RTSP|RTMP播放,达到毫秒级延迟,获得业界广泛认可。现已覆盖Windows、Android、iOS与Linux平台的RTMP推送、轻量级RTSP服务及RTSP|RTMP播放。通过高效采集Unity窗口或摄像头数据,并利用原生SDK进行编码与推送,确保了数据传输的高速性。此外,播放器支持多路视频同时播放,适应不同分辨率,并保持长时间运行稳定。更多技术细节和技术博文,请参考相关链接。
314 1
|
8月前
|
数据可视化 大数据 API
【推荐100个unity插件之22】基于UGUI的功能强大的简单易用的Unity数据可视化图表插件——XCharts3.0插件的使用
【推荐100个unity插件之22】基于UGUI的功能强大的简单易用的Unity数据可视化图表插件——XCharts3.0插件的使用
357 0
|
8月前
|
自然语言处理 搜索推荐 API
【推荐100个unity插件之21】unity实现多语言切换功能——Localization插件的使用
【推荐100个unity插件之21】unity实现多语言切换功能——Localization插件的使用
357 0
|
8月前
|
JSON 开发框架 API
【推荐100个unity插件之20】一个强大的JSON处理库——Newtonsoft.Json(也称为Json.NET)
【推荐100个unity插件之20】一个强大的JSON处理库——Newtonsoft.Json(也称为Json.NET)
630 0
|
5月前
|
测试技术 C# 图形学
掌握Unity调试与测试的终极指南:从内置调试工具到自动化测试框架,全方位保障游戏品质不踩坑,打造流畅游戏体验的必备技能大揭秘!
【9月更文挑战第1天】在开发游戏时,Unity 引擎让创意变为现实。但软件开发中难免遇到 Bug,若不解决,将严重影响用户体验。调试与测试成为确保游戏质量的最后一道防线。本文介绍如何利用 Unity 的调试工具高效排查问题,并通过 Profiler 分析性能瓶颈。此外,Unity Test Framework 支持自动化测试,提高开发效率。结合单元测试与集成测试,确保游戏逻辑正确无误。对于在线游戏,还需进行压力测试以验证服务器稳定性。总之,调试与测试贯穿游戏开发全流程,确保最终作品既好玩又稳定。
275 4