using UnityEngine; using UnityEngine.Events; public class UIKeyBinder : MonoBehaviour { [SerializeField] private GameObject UI; [SerializeField] private GameKey key; [SerializeField] private GameInputBinding gamepadBinding; // New field for gamepad binding public UnityEvent OnUIVisibilityChanged = new UnityEvent(); bool isInputTriggered; void Update() { if (GameStateController.Instance.CurrentState != GameState.GameScene) return; // Check for input using both keyboard and gamepad isInputTriggered = (key != null && Input.GetKeyDown(key.keyCode)) || (!string.IsNullOrEmpty(gamepadBinding?.bindingName) && GameInputManager.Instance.GetButtonDown(gamepadBinding?.bindingName)); if (isInputTriggered) { UI.SetActive(!UI.activeSelf); OnUIVisibilityChanged.Invoke(UI.activeSelf); } } // Optional: Method to set gamepad binding name dynamically public void SetGamepadBindingName(string bindingName) { gamepadBinding.bindingName = bindingName; } // Optional: Direct method to toggle UI if needed public void ToggleUI() { UI.SetActive(!UI.activeSelf); OnUIVisibilityChanged.Invoke(UI.activeSelf); } }