Как я могу предотвратить изменение ориентации по умолчанию в Unity на 8th Wall XR? - PullRequest
0 голосов
/ 23 сентября 2018

Каждый раз, когда я строю, он меняется обратно на Портрет.Я не могу найти, где отключить это автоматическое изменение.Можно ли это сделать?

1 Ответ

0 голосов
/ 24 сентября 2018

Зайдите в настройки проигрывателя, установите ориентацию на любое значение, кроме автоматического поворота, и оно не изменится.

Вы также можете изменить ориентацию программно.Просто убедитесь, что он установлен обратно в фиксированную ориентацию, прежде чем загружать сцену AR.Например, если вы хотите, чтобы автоповорот был включен в ваших не-AR сценах, вы можете установить Screen.orientation = ScreenOrientation.AutoRotation, а затем перед загрузкой AR-сцены просто установить его в положение Portrait или Landscape.

Если вы хотите получить фантазию, вы также можете автоматически определять ориентацию устройства в тот момент, когда пользователь нажимает любую кнопку, которая используется для запуска сцены AR, сначала проверив Input.deviceOrientation, а затем установив Screen.ориентация на это.

Вот пример - функция Run () запускает вашу сцену (после первой проверки ориентации устройства и установки ориентации экрана на основании этого):

void Run(String scene) {
      // Lock orientation to current device orientation prior to loading AR scene 
      switch (Input.deviceOrientation) {
        case DeviceOrientation.Portrait:
          Screen.orientation = ScreenOrientation.Portrait;
          break;
        case DeviceOrientation.PortraitUpsideDown:
          Screen.orientation = ScreenOrientation.PortraitUpsideDown;
          break;;
        case DeviceOrientation.LandscapeLeft:
          Screen.orientation = ScreenOrientation.LandscapeLeft;
          break;;
        case DeviceOrientation.LandscapeRight:
          Screen.orientation = ScreenOrientation.LandscapeRight;
          break;;
        default:
          // if Unknown, just set to Portrait
          Screen.orientation = ScreenOrientation.Portrait;
          break;
      }
    SceneManager.LoadScene(scene);
  }
...