Для отключения автоматического выделения и нажатия кнопок при использовании клавиш клавиатуры, вы можете использовать EventSystem в Unity. EventSystem управляет вводом и событиями в вашем приложении.
В вашем случае, чтобы отключить автоматическое выделение кнопок с клавиш клавиатуры, вы можете установить объект EventSystem.current.firstSelectedGameObject в null в момент запуска вашей программы или в методе Start.
Пример кода:
using UnityEngine;
using UnityEngine.UI;
public class Tools : MonoBehaviour
{
public Classes classes;
public Button[] toolsButtons;
private void Start()
{
// Убираем выделение кнопок при старте
UnityEngine.EventSystems.EventSystem.current.firstSelectedGameObject = null;
for (int i = 0; i < 5; i++)
{
toolsButtons[i].GetComponentInChildren<TextMeshProUGUI>().text = classes.playerController.keypad[i].ToString();
}
for (int i = 0; i < toolsButtons.Length; i++)
{
int index = i; // Захватываем переменную в замыкание, чтобы избежать проблем с замыканием
toolsButtons[i].onClick.AddListener(() => { classes.playerController.Key(index); });
}
}
private void ToMenu()
{
gameObject.SetActive(false);
classes.menu .gameObject.SetActive(true);
}
}
В данном коде EventSystem.current.firstSelectedGameObject = null; устанавливает текущий выбранный объект в null, что приведет к отсутствию выделения кнопок клавишами при старте приложения.
public class Tools : MonoBehaviour
{
public Classes classes;
public Button[] toolsBottons;
private void Start()
{
for (int i = 0; i < 5; i++)
toolsBottons[i].GetComponentInChildren<TextMeshProUGUI>().text = classes.playerController.keypad[i].ToString();
for (int i = 0; i < toolsBottons.Length; i++)
{
if (i == 0)
toolsBottons[i].onClick.AddListener(()=> {classes.playerController.Key(0);});
else if (i == 1)
toolsBottons[i].onClick.AddListener(()=> {classes.playerController.Key(1);});
else if (i == 2)
toolsBottons[i].onClick.AddListener(()=> {classes.playerController.Key(2);});
else if (i == 3)
toolsBottons[i].onClick.AddListener(()=> {classes.playerController.Key(3);});
else if (i == 4)
toolsBottons[i].onClick.AddListener(()=> {classes.playerController.Key(4);});
else if (i == 5)
toolsBottons[i].onClick.AddListener(ToMenu);
}
}
private void ToMenu()
{
gameObject.SetActive(false);
classes.menu.gameObject.SetActive(true);
}
}
Подскажите мне, может быть есть какое-то событие по отслеживанию нажатий всех кнопок с канваса или просто как-то можно отключить связь клавиатуры и кнопок (но не отключать вообще весь ввод с клавы, только связь с событиями кнопок) и что-то другое.