using System; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; public class RadialMenuItem : MonoBehaviour { [SerializeField] private Button _radialMenuItemPrefab; public void ShowButtons(List actions, Action menuButtonClick) { for (int buttonsCount = 0; buttonsCount < actions.Count; buttonsCount++) { var button = Instantiate(_radialMenuItemPrefab); button.transform.SetParent(transform, false); float theta = (2 * Mathf.PI / actions.Count) * buttonsCount; float posX=Mathf.Sin(theta); float posY=Mathf.Cos(theta); button.transform.localPosition = new Vector3(posX, posY, 0)*100f; var textMeshPro = button.GetComponentInChildren(); if (textMeshPro != null) { textMeshPro.text = actions[buttonsCount].ActionName; } button.onClick.AddListener(() => { Hide(); CloseDialog(); menuButtonClick?.Invoke(actions[1]); }); } } private void CloseDialog() { UIManager.Instance.Unfreeze(); Destroy(this); } private void Hide() { gameObject.SetActive(false); } }