Unity выбирает значение bool из меню и загружает в сцену Google Cardboard.

Я хочу, чтобы пользователь мог выбрать в главном меню, хотят ли они запустить игру с включенным VR Stereo или загрузить ее в монофоническом режиме. Прямо сейчас скрипт GvrViewer имеет логическую галочку в графическом интерфейсе для включения/отключения VR, поэтому я пытаюсь, чтобы пользователь фактически управлял этим логическим значением из главного меню.

Я не уверен, что я на правильном пути, но у меня есть 2 кнопки в главном меню с надписью «Войти в VR» и «Войти в моно». В идеале нажатие на «Войти в VR» запускает функцию, которая устанавливает логическое значение и загружает новую сцену с этим логическим значением, запускающим режим VR. Однако я не могу понять, как передать сохраненное логическое значение в новую сцену и заставить его переопределить настройки, уже сохраненные в инспекторе графического интерфейса. Я попытался «найти» значение игрового объекта из моего сценария меню, но, похоже, я не добился успеха.

// buttons on main menu

public void LoadMono(int level) {
    MonoOrStereo.VRModeEnabled = false;
    Application.LoadLevel (level);
}

public void LoadStereo() {
    MonoOrStereo.VRModeEnabled = true;
    Application.LoadLevel (level);
}



// boolean provided by GvrViewer script for GUI inspector settings

bool VRModeEnabled {
    get {
      return vrModeEnabled;
    }
    set {
            if (value != vrModeEnabled && device != null) {
                device.SetVRModeEnabled(value);
      }
            vrModeEnabled = value;
    }
  }
  [SerializeField]
  public bool vrModeEnabled = false;

person violetthesun    schedule 02.09.2016    source источник


Ответы (1)


Правильным подходом было бы иметь объект Game manager, который сохраняется во всей игре и имеет контроль над объектом класса настроек.

В случае, если вам все еще нужно получить доступ к публичному логическому значению, видимому в инспекторе, используйте этот подход:

SettingsObject = GameObject.FindGameObjectsWithTag("Settings");
SceneManager = SettingsObject.GetComponent<SomeSceneManagerClass>();
Scenemanager.vrModeEnabled = true; 

Трудно точно сказать, что нужно сделать, потому что мне нужно видеть структуру вашего проекта, какие классы управляют вашим проектом и как они составлены в Inspector.

(обратите внимание, что приведенный выше код просто указывает подход и может не работать так, как вы хотите. Чтобы он был полезен в вашем случае, необходимы данные, которые я упомянул выше)

person the.Legend    schedule 02.09.2016