混合缩放

混合缩放功能用于加载地图区域,在此类区域中,靠近玩家的区域包含较高细节级别,而较远的区域包含细节级别会逐渐降低的区域。

生成的场景包含在与距离相关的缩放级别下渲染的矢量图块,其中“地平线”位于远处。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 之间切换,具体取决于哪些对象最适合针对当前镜头位置渲染。