缺少主摄像机引用的脚本

时间:2019-10-13 02:52:51

标签: mrtk

我知道,关于这个错误总是有很多问题,但是我没有用先前的答案来解决它...

所以,请让我解释一下。

我正在使用Hololens技术。最近,我已从HoloToolKit更新到MRTK V2(Microsoft和社区提供的新SDK)。我的应用程序与HoloToolKit,Unity和2017.4一起使用。我已针对MRTKv2和2019.2更新(推荐)。

我有一些使用摄像机位置的脚本。在我以前的应用程序中,“相机”是BiCamera(GameObject),是Basic(GameObject)的子代。我的BiCamera被标记为MainCamera。现在,我的摄像机是Main Camera(两个单词之间有一个空格),标记为MainCamera,它是MixedRealityPlayspace的子级。该摄像机由MRTKv2提供。我无法更改设置。

因此,当我处于“播放”模式时,此消息显示为黄色:

 The referenced script on this Behaviour (Game Object 'Main Camera') is missing!

当我移动主摄像机以模拟用户的走动(Hololens =增强现实)时,我用红色显示此消息:

 NullReferenceException: Object reference not set to an instance of an object
 TextSpeedUI.Update () (at Assets/Scripts/TextSpeedUI.cs:23) 

我认为第二条消息链接到第一条消息...我的脚本TextSpeedUI需要camera.transform来计算步行速度(实际上不是直接地,他从另一个GameObject中找到公共变量,但是此GameObject需要Camera.transform )。

另一个选项与MRTK提供的GameObject主摄像机链接,因为当我选择此GameObject时,我缺少一个脚本。一条消息说我必须修复编译错误...但这也许是后果,而不是起源……我迷路了。

TextSpeedUI.cs 23

 if (sd.isActiveAndEnabled && sd.Steps.Count > 4)
 {
     xzSpeed = (sd.Steps[sd.Steps.Count - 1].localMinPosition - sd.Steps[sd.Steps.Count - 4].localMinPosition) / ((sd.Steps[sd.Steps.Count - 1].t - sd.Steps[sd.Steps.Count - 4].t));
     txt.text = (xzSpeed.magnitude * 3.6).ToString("0.##"); // speed in km/h
 }

sd来自公共StepDetector sd;在我的脚本TextSpeedUI.cs的开头

我的脚本StepDetector.cs调用public DataManager dm;

在我的DataManager.cs脚本中,我从头开始调用:

 public Camera Cam { get; private set; }

在无效的开始:

 Cam = Camera.main;

非常感谢

1 个答案:

答案 0 :(得分:0)

我自己解决了(只需删除组件)。看来这对我的场景没有影响...