Как сделать объекты на сцене неактивными при открытии меню в Unity?

Рейтинг: 0Ответов: 1Опубликовано: 17.02.2023

Пишу шахматы на Unity.

Как при открытии меню отключить возможность двигать фигуры?

Ответы

▲ 1Принят

Если у тебя фигуры сделаны как UI объект(картинка, кнопка и т.д.), то создаешь переменную которая будет проверять, в меню ли ты, а потом прописываешь условие, что если ты находишься в меню - твоим фигурам назначается слой Ignore Raycast, который не позволяет как либо взаимодействовать с фигурами. Насколько я понял, у тебя уже есть массив с фигурами

public GameObject[] objects;

Поэтому создаём функцию, где назначаем всем фигурам в массиве слой Ignore Raycast:

private void DisableObjects(){
    for (int i = 0; i < objects.Length; i++){
        objects[i].gameObject.layer = LayerMask.NameToLayer("Ignore Raycast");
    }
}

А потом создаём функцию, где возвращаем всем фигурам исходный слой, допустим слой Default:

private void EnableObjects(){
    for (int i = 0; i < objects.Length; i++){
        objects[i].gameObject.layer = LayerMask.NameToLayer("Default");
    }
}