我知道,关于这个错误总是有很多问题,但是我没有用先前的答案来解决它...
所以,请让我解释一下。
我正在使用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;
非常感谢
答案 0 :(得分:0)
我自己解决了(只需删除组件)。看来这对我的场景没有影响...