using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class AllyUpgrade : MonoBehaviour, IPointerClickHandler { [SerializeField] private GameObject _upgradeUI; [SerializeField] private List _upgradeList = 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); AssignUpgrades(canvas); } } Debug.Log(_instance.transform.position); Debug.Log(Camera.main.WorldToScreenPoint(transform.position)); } else { Destroy(_instance); Debug.Log("Destroyed...."); } } } private void AssignUpgrades(Canvas canvas) { GameObject _firstChildren = _instance.transform.GetChild(1).gameObject; Debug.Log("Upgrade count: " + _firstChildren.transform.childCount); // Assign upgrade Prefabs for (int i = 0; i < _firstChildren.transform.childCount - 1; i++) { Debug.Log(i); GameObject upgradeEnfant = _firstChildren.transform.GetChild(i).gameObject; UpgradePlacementButton button = upgradeEnfant.GetComponent(); button.Initialize(_upgradeList[i], gameObject, canvas); } }}