Почему при нажатии кнопки START GAME, когда игра запущена в сборке, она не работает, ничего не делает, но работает в редакторе? - PullRequest
0 голосов
/ 21 мая 2018

В Иерархии в редакторе у меня две сцены.И у меня в сцене меню у меня есть кнопка под названием: StartGameButton

Когда я нажимаю кнопку, когда игра работает в редакторе, она работает.Я нажимаю на кнопку, и она включается в режиме true player2 на сцене The Space Station.

Но после сборки игры и запуска exe-игры при нажатии кнопки она ничего не делает.

Это скриншот двух сцен в Иерархии и кнопки «Инспектор»:

StartGameButton

На скриншоте видно, что player2 включен серымвыкл.К кнопке я прикрепил скрипт LoadSceneOnClick:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class LoadSceneOnClick : MonoBehaviour
{
    public void ActivatePlayer()
    {
        GameControl.player.SetActive(true);
        SceneManager.UnloadSceneAsync(0);
    }
}

Я создал статический класс, чтобы можно было использовать переменную между двумя сценами:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public static class GameControl
{
    public static GameObject player;
}

Затем в сценеКосмическая станция У меня есть игровой объект с этим сценарием:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerControl : MonoBehaviour
{
    public GameObject player;

    // Use this for initialization
    void Start ()
    {
        GameControl.player = player;
    }

    // Update is called once per frame
    void Update () {

    }
}

Поэтому, когда я нажимаю кнопку StartGameButton, сначала меняется player2 на true, а затем выгружается, удаляя сцену Menu.

GameControl.player.SetActive(true);
SceneManager.UnloadSceneAsync(0);

Это нормально работает в редакторе.Но он не работает в сборке после сборки игры и запуска exe-файла. Я вижу сцену меню и кнопки, но ничего не происходит, когда я нажимаю на кнопку.

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

Вот так выглядит игра в редакторе:

Game running in editor

Поскольку активная сцена - Космическая станция, и игрок2 выключен, начните игру с главного меню, но со скайбоксом и другими объектами сцены Космической станции.

Затем я нажимаю кнопку НАЧАТЬ ИГРУ: И это приводит меня к сцене Космической станции:

И удалить выгруженную сцену Меню:

Space Station scene

Но когда я 'При запуске исполняемого файла сборки это выглядит так:

Build

Даже близко не похоже на то, как это выглядит в редакторе.

Это скриншот окна Build Settings ...: я не могу понять, почему оннормально работает в редакторе, но не при запуске файла, встроенного в exe.

Что-то не так с настройками сборки?

Build Settings...

1 Ответ

0 голосов
/ 21 мая 2018

Мне удалось решить ее, и теперь она отлично работает.

Я создал другой сценарий и прикрепил его к пустому GameObject в сцене меню:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class LoadScenes : MonoBehaviour
{
    // Use this for initialization
    void Start ()
    { 
        SceneManager.LoadScene(1, LoadSceneMode.Additive);
        StartCoroutine(WaitForSceneLoad(SceneManager.GetSceneByName("The Space Station")));        
    }

    public IEnumerator WaitForSceneLoad(Scene scene)
    {
        while (!scene.isLoaded)
        {
            yield return null;
        }
        SceneManager.SetActiveScene(SceneManager.GetSceneByBuildIndex(1));
    }
}

Однажды сцена "TheКосмическая станция "загружена, я превращаю ее в сцену SetActive.И он показывает мне меню (главное меню) с некоторыми объектами "Космическая станция" и скайбоксом.

Наконец.

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