Я знаю, всегда есть много вопросов об этой ошибке, НО мне не удалось исправить ее с помощью предыдущих ответов ...
Итак, пожалуйста, позвольте мне объяснить.
Я работаю с техникой Хололенса. Недавно я обновился с HoloToolKit до MRTK V2 (новый SDK, предоставленный Microsoft и сообществом). Мое приложение работало с HoloToolKit, Unity и 2017.4. Я обновил для MRTKv2 и 2019.2 (рекомендуется).
У меня есть несколько сценариев, которые используют положение камеры. В моем предыдущем приложении Camera была BiCamera (GameObject), потомок Basic (GameObject). А моя бикамера была помечена как мейкамера. Прямо сейчас моей камерой была основная камера (с пробелом между двумя словами), помеченная как 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).
Другой параметр связан с основной камерой GameObject, предоставленной MRTK, потому что, когда явыберите этот 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;
Большое спасибо