Как сделать, чтобы кнопка хода была видна(или активна) у того игрока, чей сейчас ход?

Для решения данной задачи в Unity можно использовать следующий алгоритм:

1. Создайте переменную, которая будет отвечать за текущего активного игрока. Например, вы можете использовать перечисление (enum) с двумя значениями: "Player1" и "Player2". Изначально установите значение переменной на "Player1", так как предположим, что первый игрок всегда ходит первым.

2. Создайте кнопку для хода и задайте ей начальное состояние: видимость и активность. Вы также можете добавить графическое представление (например, изменить цвет фона или добавить иконку), чтобы отображать текущего активного игрока.

3. При каждом переключении хода между игроками, изменяйте значение переменной, отвечающей за текущего активного игрока. Например, если текущий игрок - "Player1", при нажатии на кнопку хода, переключите значение на "Player2", и наоборот.

4. Создайте скрипт, который будет проверять, когда нужно активировать или деактивировать кнопку хода в зависимости от текущего активного игрока. Определите функцию, которая будет вызываться при каждом изменении значения переменной текущего активного игрока.

5. Внутри этой функции проверяйте, какой игрок сейчас активен, и в соответствии с этим изменяйте состояние кнопки хода. Например, если активный игрок - "Player1", сделайте кнопку видимой и активной, а если активный игрок - "Player2", скройте или отключите кнопку.

Примерный код скрипта может выглядеть следующим образом:

public enum Player
{
    Player1,
    Player2
}

public class TurnButtonController : MonoBehaviour
{
    public Button turnButton;
    public Player activePlayer = Player.Player1;

    void UpdateTurnButton()
    {
        if (activePlayer == Player.Player1)
        {
            turnButton.interactable = true; // сделать кнопку активной
            turnButton.gameObject.SetActive(true); // сделать кнопку видимой
        }
        else if (activePlayer == Player.Player2)
        {
            turnButton.interactable = false; // сделать кнопку неактивной
            turnButton.gameObject.SetActive(false); // скрыть кнопку
        }
    }

    public void OnTurnButtonClicked()
    {
        if (activePlayer == Player.Player1)
        {
            activePlayer = Player.Player2;
        }
        else if (activePlayer == Player.Player2)
        {
            activePlayer = Player.Player1;
        }
        UpdateTurnButton();
    }
}

В данном примере мы определили перечисление "Player", которое содержит два значения: Player1 и Player2. Также у нас есть переменная activePlayer, которая отвечает за текущего активного игрока. Мы добавили кнопку turnButton для хода и при нажатии на нее вызываем функцию OnTurnButtonClicked.

Функция UpdateTurnButton проверяет значение переменной activePlayer и в соответствии с этим меняет состояние кнопки хода: делает ее видимой и активной для Player1 и скрывает или делает неактивной для Player2. Функция OnTurnButtonClicked переключает значение переменной activePlayer и вызывает UpdateTurnButton для обновления состояния кнопки хода после переключения.

Закрепите этот скрипт на объекте, на котором находится кнопка хода (например, в пустом объекте или на вашем главном игровом объекте) и присвойте переменной turnButton вашу кнопку хода из сцены.