Files
EnglewoodLAB/Assets/Scripts/UI/SettingPanel/UI_MappingButton.cs
SOOBEEN HAN f1894889ee <refactor> Octopus Twin 템플릿 적용
- 기능 외 UI 구조만 적용
- 프로젝트에 걸맞는 UI는 재작업 필요
2026-02-23 18:20:09 +09:00

78 lines
2.0 KiB
C#

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using System;
using UnityEngine.EventSystems;
namespace EnglewoodLAB.UI
{
public class UI_MappingButton : UIBase, IPointerEnterHandler, IPointerExitHandler
{
public Button button;
public RawImage Line;
public TextMeshProUGUI Value;
public Action<UI_MappingButton> onClickButton;
public float duration;
public bool isClick;
public void SetMappingButton()
{
button = GetComponentInChildren<Button>();
button.onClick.AddListener(OnClickMappingButton);
}
void OnClickMappingButton()
{
onClickButton?.Invoke(this);
}
public void ExpandLine()
{
StopAllCoroutines();
StartCoroutine(LineAnimation(0.9f));
}
public void ReductionLine()
{
StopAllCoroutines();
StartCoroutine(LineAnimation(0f));
}
private IEnumerator LineAnimation(float nextValue)
{
var originalScale = Line.transform.localScale;
var targetScale = new Vector3(nextValue, 1f, 1f);
float elapsedTime = 0f;
while (elapsedTime < duration)
{
var progress = elapsedTime / duration;
Line.transform.localScale = Vector3.Lerp(originalScale, targetScale, progress);
elapsedTime += Time.deltaTime;
yield return null;
}
Line.transform.localScale = targetScale;
}
public void OnPointerEnter(PointerEventData eventData)
{
if (isClick)
return;
StopAllCoroutines();
StartCoroutine(LineAnimation(0.3f));
}
public void OnPointerExit(PointerEventData eventData)
{
if (isClick)
return;
StopAllCoroutines();
StartCoroutine(LineAnimation(0f));
}
}
}