Для решения данной задачи в Unity можно использовать следующий алгоритм:
- Создайте переменную, которая будет отвечать за текущего активного игрока. Например, вы можете использовать перечисление (enum) с двумя значениями: "Player1" и "Player2". Изначально установите значение переменной на "Player1", так как предположим, что первый игрок всегда ходит первым.
- Создайте кнопку для хода и задайте ей начальное состояние: видимость и активность. Вы также можете добавить графическое представление (например, изменить цвет фона или добавить иконку), чтобы отображать текущего активного игрока.
- При каждом переключении хода между игроками, изменяйте значение переменной, отвечающей за текущего активного игрока. Например, если текущий игрок - "Player1", при нажатии на кнопку хода, переключите значение на "Player2", и наоборот.
- Создайте скрипт, который будет проверять, когда нужно активировать или деактивировать кнопку хода в зависимости от текущего активного игрока. Определите функцию, которая будет вызываться при каждом изменении значения переменной текущего активного игрока.
- Внутри этой функции проверяйте, какой игрок сейчас активен, и в соответствии с этим изменяйте состояние кнопки хода. Например, если активный игрок - "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 вашу кнопку хода из сцены.