using System; using TMPro; using UnityEngine; using UnityEngine.UI; using DG.Tweening; using Sirenix.OdinInspector; namespace BlueWater.Uis { public class ItemLootInfoUi : MonoBehaviour { [SerializeField] private Image _itemImage; [SerializeField] private TMP_Text _itemNameText; [SerializeField] private TMP_Text _totalItemCountText; [SerializeField] private float _moveDuration = 0.5f; [SerializeField] private float _showDuration = 2f; public bool IsShowing { get; private set; } private Tween _showTween; private Tween _hideTween; private void Awake() { _hideTween = transform.DOScale(0f, _moveDuration).From(Vector3.one).Pause() .SetAutoKill(false).OnComplete(() => { gameObject.SetActive(false); IsShowing = false; }); _showTween = transform.DOScale(1f, _moveDuration).From(Vector3.zero).Pause() .SetAutoKill(false).OnComplete(() => { Invoke(nameof(HideUi), _showDuration); }); } private void Start() { transform.localScale = Vector3.zero; gameObject.SetActive(false); } private void OnDestroy() { _showTween.Kill(); _hideTween.Kill(); } [Button("컴포넌트 초기화")] private void InitializeComponents() { _itemImage = transform.Find("Image").GetComponent(); _itemNameText = transform.Find("NameText").GetComponent(); _totalItemCountText = transform.Find("TotalCountText").GetComponent(); } public void SetInfo(Sprite sprite, string itemNameText, string totalItemCountText) { _itemImage.sprite = sprite; _itemNameText.text = itemNameText; _totalItemCountText.text = totalItemCountText; } public void ShowUi() { IsShowing = true; transform.SetAsLastSibling(); gameObject.SetActive(true); _showTween.Restart(); } public void HideUi() { _hideTween.Restart(); } } }