Страница 1 из 1

А как выполнить какие-нибудь действия, когда сцена закрыта?

СообщениеДобавлено: 18 фев 2018, 17:57
SSlava
А как выполнить какие-нибудь действия, когда текущая сцена закрыта?

Ну например if (сцена закрыта).
Я читал справку, но подходящего пока что ничего не нашел. Плохо смотрю наверное))

Re: А как выполнить какие-нибудь действия, когда сцена закрыта?

СообщениеДобавлено: 18 фев 2018, 18:59
seaman
Тебе приз за странность вопроса.
1. Рантайм.
Если ни одна сцена не открыта - игры нет!
2. Редактор.
В любом случае какая то сцена открыта. Если нет - редактор закрыт!

Re: А как выполнить какие-нибудь действия, когда сцена закрыта?

СообщениеДобавлено: 18 фев 2018, 20:07
SSlava
Да нет, вопрос не странный.
Если ни одна сцена не открыта - игры нет!


Ну да, может не так написал)). Это при закрытии одной сцены, и открытии другой сцены ошибки возникают.

Синтаксис:
Используется csharp
public class bonus_on_the_enemy : MonoBehaviour
{
    public string gameobject;
    private GameObject enemy;
    private bool Exet = false;
   
    void Start()
    {
        enemy = (GameObject)this.gameObject;
    }

    void OnApplicationQuit()
    {
        Exet = true;
    }

    void UnloadCurrentScene()
    {

    }
    void OnDestroy() // срабатывает, когда объект, на котором прикреплен бонус, уничтожен.
    {
        if (Exet == false)
        {
            GameObject Prefab1 = Pool.Pool11(Resources.Load(gameobject) as GameObject, enemy.transform.position, enemy.transform.rotation);
        }

        string sceneName = SceneManager.GetActiveScene().name;
     

    }


}


Ну это для вешания бонусов и объектов всяких при уничтожении.

Так раньше ошибку выдавал просто при остановке игры в Юнити, а сейчас при загрузке новой сцены стал выдавать ту же ошибку
Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?), плюс NullReferenceException: Object reference not set to an instance of an object

Как интересно можно это исправить?

Re: А как выполнить какие-нибудь действия, когда сцена закрыта?

СообщениеДобавлено: 18 фев 2018, 20:12
SSlava
А хотя да, тоже с пулом связано, объекты уничтожаются все, и ссылаются на несуществующие, сейчас исправлю, но плюс еще что-то еще есть другое наверное.

Re: А как выполнить какие-нибудь действия, когда сцена закрыта?

СообщениеДобавлено: 18 фев 2018, 20:23
SSlava
:D ну да, что-то не так с этим самим скриптом, а не с пулом.

Пул очищаю (ну точнее List, чтобы там нулевых значений всяких непонятных не было), в одном случае это помогло, а тут не помогает, те же самые ошибки при закрытии сцены.

Метод void OnDestroy() Какой-то проблемный)) Или не умею его использовать правильно, скорее всего.

Re: А как выполнить какие-нибудь действия, когда сцена закрыта?

СообщениеДобавлено: 18 фев 2018, 20:37
seaman
Что Вы хотите сделать то?

Re: А как выполнить какие-нибудь действия, когда сцена закрыта?

СообщениеДобавлено: 18 фев 2018, 20:46
SSlava
Да ничего не делается, сцена закрывается, открывается новая, и ошибки выдаются в этом скрипте.

Этот скрипт повешен на многие объекты закрытой сцены.

Re: А как выполнить какие-нибудь действия, когда сцена закрыта?

СообщениеДобавлено: 18 фев 2018, 21:50
seaman
С Вами очень сложно общаться - Вы прямо партизан. Ну и скрипт явно не полный, хотя и с ненужными деталями...
Что Вы хотите сделать в этом скрипте? Зачем Вы его вообще написали? Что он по Вашему делает?
ЗЫ: Советую создание объекта вынести из OnDestroy. Вы же как-то его удаляете? Он ведь не только при закрытии сцены удаляется?

Re: А как выполнить какие-нибудь действия, когда сцена закрыта?

СообщениеДобавлено: 19 фев 2018, 04:09
SSlava
:D да нет. Скрипт полный.
Он нужен был для создания бонусов после уничтожения противника.

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