混合缩放功能用于加载地图区域,在此类区域中,靠近玩家的区域包含较高细节级别,而较远的区域包含细节级别会逐渐降低的区域。
生成的场景包含在与距离相关的缩放级别下渲染的矢量图块,其中“地平线”位于远处。horizon这意味着您可以渲染跨越数千米或更久的地图,同时可以大大减少处理工作,从而为玩家提供更好的游戏内体验。
运作方式
混合缩放采用简单的地图加载机制,该机制使用 Google.Maps.Loading.MapLoader
组件。借助 Google.Maps.Loading.MixedZoom
组件,您可以为混合缩放设置其他参数。以下示例代码演示了如何使用混合缩放功能。
using Google.Maps;
using Google.Maps.Loading;
using UnityEngine;
[RequireComponent(typeof(MapLoader), typeof(MixedZoom))]
public class MixedZoomMapLoader : MonoBehaviour {
private MapLoader MapLoader;
public void Start() {
MapLoader = GetComponent<MapLoader>();
MapLoader.Init(new GameObjectOptions() { ... });
}
public void Update() {
MapLoader.Load();
MapLoader.UnloadUnused();
}
}
脚本参数
本部分列出了地图加载器脚本组件和混合缩放脚本组件的参数。下图显示了 Unity Inspector 中的这些脚本组件。
地图加载器脚本组件
- 地图服务
- Maps SDK for Unity 的入口点实例,用于加载地图。
- 放大
- 用于在前台加载地图的缩放级别。
- 区域形状
- 一个包含以下两个值的枚举:
- Circle:围绕镜头位置加载圆形。当玩家可以控制镜头平移时,可以使用此属性。
- 视口:仅加载镜头可见的地图部分。
- Horizon
- 加载地图时与镜头位置之间的最大距离。
- 卸载未使用的秒数
- 调用
MapLoader.UnloadUnused()
时,会卸载在这么长的时间内未加载或渲染的地图部分。
混合缩放脚本组件
- 前景距离
- 在离镜头不超过此距离时,地图会以
Map Loader
中指定的缩放级别加载。 - 衰减距离
- 超出前景距离后,缩放级别之间的距离会加倍(从衰减距离开始)。如需了解详情,请参阅下图:
注意事项
使用混合缩放功能时,Maps SDK for Unity 会在 OnPreRender()
中的活跃与非活跃 GameObject 之间切换,具体取决于哪些对象最适合针对当前镜头位置渲染。