#nullable enable using TMPro; using UnityEngine; using UnityEngine.UI; using UVC.UI.List.Draggable; namespace UVC.Factory.Modal.Settings { public class DisplayDataOrderListItemView : ListItemView { [Header("UI 추가 요소 연결")] [SerializeField] [Tooltip("사용 유무를 선택 할 Toggle")] protected Toggle? toggle; [SerializeField] [Tooltip("아이템의 제목을 표시할 TMP_InputField 컴포넌트")] protected TMP_InputField? inputText; public void Start() { if (toggle != null) { toggle.onValueChanged.AddListener(OnToggleValueChanged); } if (inputText != null) { inputText.onValueChanged.AddListener(OnInputTextChanged); } } private void OnInputTextChanged(string text) { if (boundData != null) { boundData.DisplayName = text; OnChangeData?.Invoke(boundData); } } private void OnToggleValueChanged(bool isChecked) { if (boundData is ConfigDataOrderListItemData itemData) { itemData.isChecked = isChecked; OnChangeData?.Invoke(itemData); } } protected override void UpdateUI() { base.UpdateUI(); // IListItemData 인터페이스를 구현한 경우 if (boundData != null) { if(inputText != null) inputText.text = boundData.DisplayName; if(toggle != null) toggle.isOn = boundData is ConfigDataOrderListItemData itemData && itemData.isChecked; } } protected override void OnDestroy() { base.OnDestroy(); if (toggle != null) toggle.onValueChanged.RemoveListener(OnToggleValueChanged); if (inputText != null) { inputText.onValueChanged.RemoveListener(OnInputTextChanged); } } } }