繁体   English   中英

将 Unity 中的 Vuforia 从版本 9 升级到版本 10 时出错

[英]Errors when upgrading Vuforia in Unity from version 9 to version 10

找不到类型或命名空间名称“SmartTerrain”(是否缺少 using 指令或程序集引用?)

找不到类型或命名空间名称“PositionalDeviceTracker”(是否缺少 using 指令或程序集引用?)

这些错误不在版本 9 中,但在版本 10 中它们影响项目流程请帮助我

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using Vuforia;
public class ARManager : MonoBehaviour
{
    public PlaneFinderBehaviour finder;
    SmartTerrain smartTerrain;
    PositionalDeviceTracker positionalDeviceTracker;
    ...........

tl;dr:这些类型不再存在,因为不再需要它们。


我将从Vuforia - Migration Guide for Vuforia Engine Unity Projects开始。

一般来说,对于任何软件库,API 在主要版本之间发生变化并非不可能 - 事实上,这种重大变化是发布新主要版本的主要原因之一!

本页记录了 Vuforia 引擎版本 9.8 和版本 10 之间的变化,因为 API 已经发生了根本性的变化 使用此概述了解本机更改并将现有项目迁移到新的 API。

因此,请阅读要使用的内容或 API 中的更改内容 =>必须更改代码才能采用的内容 - 或者坚持使用版本 9(如果它适合您并且您不需要最新功能);)

在您的具体情况下

地平面

一些更高级的地平面 API 已更改。 不仅使用上述游戏对象,而且使用其他运行时脚本 API 的应用程序可能必须进行调整。

智能地形追踪器已被移除 它不再需要手动管理。 因此,在运行时检查地平面支持已经改变。

Vuforia 引擎 9.8:

 SmartTerrain smartTerrain = TrackerManager.Instance.GetTracker<SmartTerrain>(); if (smartTerrain == null) Debug.Log("SmartTerrain returned null. GroundPlane not supported on this device.");

Vuforia 引擎 10.0:

 if (VuforiaBehaviour.Instance.World.AnchorsSupported == false) Debug.Log("GroundPlane not supported on this device.");

设备追踪

对设备跟踪的访问已得到简化,现在可以通过VuforiaBehaviour.Instance.DevicePoseBehaviour集中访问。

重置设备跟踪

Vuforia 引擎 9.8:

 var deviceTracker = TrackerManager.Instance.GetTracker<PositionalDeviceTracker>(); deviceTracker.Reset();

Vuforia 引擎 10.0:

 VuforiaBehaviour.Instance.DevicePoseBehaviour.Reset();

注册以更新设备跟踪状态

Vuforia 引擎 9.8:

 private void Start() { DeviceTrackerARController.Instance.RegisterDevicePoseStatusChangedCallback(OnDevicePoseStatusChanged); } void OnDevicePoseStatusChanged(Vuforia.TrackableBehaviour.Status status, Vuforia.TrackableBehaviour.StatusInfo statusInfo) { Debug.Log("OnDevicePoseStatusChanged(" + status + ", " + statusInfo + ")"); … }

Vuforia 引擎 10.0:

 private void Start() { VuforiaBehaviour.Instance.DevicePoseBehaviour.OnTargetStatusChanged += OnDevicePoseStatusChanged; } void OnDevicePoseStatusChanged(ObserverBehaviour behaviour, TargetStatus targetStatus) { Debug.Log("OnDevicePoseStatusChanged(" + targetStatus.Status + ", " + targetStatus.StatusInfo + ")"); }

启用和禁用设备跟踪

Vuforia 引擎 9.8:

 public void ToggleDeviceTracking(bool enableDeviceTracking) { var posDeviceTracker = TrackerManager.Instance.InitTracker<PositionalDeviceTracker>(); if (enableDeviceTracking) posDeviceTracker.Start(); else posDeviceTracker.Stop(); }

Vuforia 引擎 10.0:

 public void ToggleDeviceTracking(bool enableDeviceTracking) { VuforiaBehaviour.Instance.DevicePoseBehaviour.enabled = enableDeviceTracking; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM