using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class AllyUpgrade : MonoBehaviour, IPointerClickHandler { [SerializeField] private GameObject _upgradeUI; [SerializeField] private List _upgradeUnitCardList = new List(); [SerializeField] private List _upgradePrefabList = new List(); private GameObject _instance = null; public void OnPointerClick(PointerEventData eventData) { if (eventData.button == 0) //Left click { Debug.Log("Event clicked..."); if (!_instance) { GameObject sceneCanvas = GameObject.Find("Canvas"); if (sceneCanvas != null) { Canvas canvas = sceneCanvas.GetComponent(); if (canvas == null) { Debug.Log("Canvas introuvable..."); } else { _instance = Instantiate(_upgradeUI, Camera.main.WorldToScreenPoint(transform.position), Quaternion.identity, canvas.transform); } } Debug.Log(_instance.transform.position); Debug.Log(Camera.main.WorldToScreenPoint(transform.position)); AssignUpgrades(); } else { Destroy(_instance); Debug.Log("Destroyed...."); } } } private void AssignUpgrades() { GameObject upgradeParent = _instance.transform.GetChild(0).gameObject; // Assign upgrade Prefabs for (int i = 0; i < upgradeParent.transform.childCount; i++) { GameObject upgradeEnfant = upgradeParent.transform.GetChild(i).gameObject; UpgradePlacementButton button = upgradeEnfant.GetComponent(); button.SetUnit(_upgradeUnitCardList[i], _upgradePrefabList[i]); Debug.Log("Button " + button.name); } } }