using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; using UnityEngine.Events; public class FamilyNameIndex : MonoBehaviour { public Text indexText; public GameObject familyNamePrefab; public Transform familyNamesContainer; private FamilyNameIndexData data; public UnityEvent onFamilyNameSelected = new UnityEvent(); public void setData(FamilyNameIndexData familyNameIndexData) { this.data = familyNameIndexData; indexText.text = data.index; GameObject familyNameItem = null; foreach (var name in data.names) { familyNameItem = Instantiate(familyNamePrefab, familyNamesContainer); FamilyName familyName = familyNameItem.GetComponent(); familyName.nameText.text = name; familyName.button.onClick.AddListener(onFamilyNameClick); } RectTransform lastItemTransForm = familyNameItem.GetComponent(); float height = lastItemTransForm.sizeDelta.y; if (data.names.Count > 10) height += lastItemTransForm.sizeDelta.y + 10; this.gameObject.GetComponent().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height); } private void onFamilyNameClick() { GameObject gameObject = EventSystem.current.currentSelectedGameObject; FamilyName familyName = gameObject.GetComponent(); onFamilyNameSelected.Invoke(familyName); } }