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

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

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


Ответы (1 шт):

Автор решения: Nick Shakhrai

Если у тебя фигуры сделаны как 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");
    }
}
→ Ссылка