注意事项
创建导航
// HTNavigationProvider是为导航模块提供参数与配置的类,通过对这个类的参数调整,可以对导航功能进行详细配置 mNaviProvider = new HTNavigationProvider(HTSystemManager.GetHTSystem().GetARPlugin(), HTSystemManager.GetHTSystem().GetWorldControl()); // HTNavigationRender负责将路径节点渲染成导航路径 mNaviRender = new HTNavigationRender(); // HTNaviManage是sdk中导航功能的管理类,回调都是从这个类中接收的 mNavi = new HTNaviManage(); mNavi.Create(HTSystemManager.GetHTSystem().GetAppConfig(),HTSystemManager.GetHTSystem().GetAppEnv(),hostUrl,mNaviProvider,mNaviRender);
您可在Unity新建工程的 中找到HTNaviSession.cs并查看参考实例。
HTNaviManager
导航的生命周期需要与Unity绑定,您可以参考中的HTNaviManager.cs文件。这里主要说明Update、导航回调和渲染的注意事项。
- Update:
// Update负责实时导航功能的实现,isTracking表示的是当前用户的定位状态 mNavi.Update(isTracking);
您可在Unity新建工程的 中找到HTNaviSession.cs并查看参考实例。
- 导航回调:
// 这是一个必要监听 mNavi.AddNaviErrorListener(NaviErrorListener); // 这是导航启动失败的错误,需重新开始导航 HTNaviErrorCode.LOAD_RES HTNaviErrorCode.GVPS_DISABLE HTNaviErrorCode.NET_DISABLE // 这是请求导航路径失败,会中断导航可通过ContinueNavi继续 HTNaviErrorCode.NET_ERROR // 这是提示性错误不会中断导航 HTNaviErrorCode.NAVIGATING HTNaviErrorCode.LOST_TRACK // 这是一个必要监听 // 进入电梯会中断导航,需要外部的重定位来继续导航 mNavi.AddNaviElevatorListener(NaviElevatorListener); // 这个方法通知导航模块已经出电梯了 mNaviSession.mNavi.ContinueNavi(); // 这个方法通知导航模块已重新gvps定位 mNaviSession.mNavi.IsRefreshGvps(); // 这是一个可选监听 // 如果启动了导航的偏移量监听,在用户偏航的时候会根据返回的bool中断导航。中断后,需要调用RequestNaviInfo,获取最新的导航路线继续导航 mNavi.AddNaviYawListener(NaviYawListener); mNaviSession.mNaviYawListener = ShowYaw; public bool ShowYaw(float yaw) { ReplaceBtnListener(mNaviInfoDialogPanel.GetComponentInChildren<Button>(), () => { mNaviSession.mNavi.RequestNaviInfo(); mNaviInfoDialogPanel.SetActive(false); }); mNaviInfoDialogPanel.GetComponentInChildren<Text>().text = "偏航" + yaw + "m,为您重新规划路线"; mNaviInfoDialogPanel.SetActive(true); return true; } // 这是一个可选监听 // 如果启动了导航路径监听,在获取导航路径的时候会中断导航,等待调用ResetNaviRoute选择导航路径继续导航 mNavi.AddNaviPathListener(NaviPathListener); mNaviSession.mNavi.ResetNaviRoute(naviContent.path[0]);
您可在Unity新建工程的 中找到HTNaviManager.cs并查看参考实例。
- 渲染:
HTNavigationProvider
在HTNavigationProvider中可以配置很多导航模块参数,如果想进行更多的参数调整,可以通过调用IHTNavigationProvider接口或者继承HTNavigationProvider来实现。
public class HTNavigationProviderExt : HTNavigationProvider { ... } mNaviProvider = new HTNavigationProviderExt(HTSystemManager.GetHTSystem().GetARPlugin(), HTSystemManager.GetHTSystem().GetWorldControl());
您可在Unity新建工程的 中找到HTNavigationProviderExt.cs并查看参考实例。
HTNavigationRender
HTNavigationRender主要负责对导航路径的渲染,通过继承和实现接口实现高度自定义。
您可在Unity新建工程的 中找到HTNavigationRenderExt.cs并查看参考实例。