Unity, как де / активировать компоненты в другой сцене - PullRequest
0 голосов
/ 30 мая 2019

Моя проблема заключается в следующем.
Я нахожусь в главном меню сцены, и есть 2 кнопки: один игрок VSplayer и другой VScpu.
Теперь я хочу включить / отключить некоторый компонент в сцене, который будет загружен при нажатии одной из кнопок.

Как я могу решить эту проблему?

public void PlayerVsPlayer()
{
    GameObject[] objs = SceneManager.GetSceneByName("First Level").GetRootGameObjects();
    foreach(GameObject o in objs)
    {
        if(o.gameObject.tag == "--Gameplay")
        {
            o.gameObject.GetComponentInChildren<StaticPlayerCtr_p2>().enabled = true;
            o.gameObject.GetComponentInChildren<AI>().enabled = false;
            o.gameObject.GetComponentInChildren<UnityEngine.AI.NavMeshAgent>().enabled = false; 
        }
    }
    SceneManager.LoadScene("First Level");
}

public void VsCPU()
{
    GameObject[] objs = SceneManager.GetSceneByName("First Level").GetRootGameObjects();
    foreach (GameObject o in objs)
    {
        if (o.gameObject.tag == "--Gameplay")
        {
            o.gameObject.GetComponentInChildren<StaticPlayerCtr_p2>().enabled = false;
            o.gameObject.GetComponentInChildren<AI>().enabled = true;
            o.gameObject.GetComponentInChildren<UnityEngine.AI.NavMeshAgent>().enabled = true;
        }
    }
    SceneManager.LoadScene("First Level");
}

public void QuitGame()
{
    Application.Quit();
}

Это ошибка:

ArgumentException: сцена недействительна.

1 Ответ

0 голосов
/ 31 мая 2019

Насколько я знаю, вы не можете получить доступ к сценам GameObjects из других сцен.

Если вы хотите иметь две разные сцены в зависимости от опции (здесь это будет PvP и PvCpu), вы должны создать две разные сцены. Затем, в зависимости от того, какой вариант выбран, скажем, PvP и PvCpu - кнопки, затем в зависимости от того, какая кнопка нажата, вы загружаете нужную сцену.

Надеюсь, я тебе помог. Удачи в вашей игре!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...