using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class DeselectManager : SingletonBehaviour { private GameObject _allyUpgrade; [SerializeField] private Canvas _canvas; private void Update() { if (Input.GetMouseButton(0) && _allyUpgrade != null) { // Vérifie si click est sur un enfant d'AllyUpgrade PointerEventData pointerData = new PointerEventData(EventSystem.current) { position = Input.mousePosition }; List results = new List(); GraphicRaycaster raycaster = _canvas.GetComponent(); raycaster.Raycast(pointerData, results); foreach (RaycastResult result in results) { if (result.gameObject.transform.IsChildOf(_allyUpgrade.transform)) { return; } } Destroy(_allyUpgrade); _allyUpgrade = null; } } public void SetAllyUpgrade(GameObject allyUpgradeInstance) { if (_allyUpgrade == null) { _allyUpgrade = allyUpgradeInstance; } else if (_allyUpgrade != allyUpgradeInstance) { Destroy(_allyUpgrade); _allyUpgrade = allyUpgradeInstance; } } }