오늘은 빌드를 진행했는데,
시간에 맞춰서 급하게 작업하다보니
사용자에게 굉장히 불친절한 게임이 탄생했다.
UI에서 하버 기능을 조금 수정했는데, 마우스를 올리면 색상이 변하고, 텍스트가 나오게 제작했다.
public static Color HexToColor(string hex)
{
hex = hex.Replace("#", "");
byte a = 255;
byte r = byte.Parse(hex.Substring(0, 2), NumberStyles.HexNumber);
byte g = byte.Parse(hex.Substring(2, 2), NumberStyles.HexNumber);
byte b = byte.Parse(hex.Substring(4, 2), NumberStyles.HexNumber);
if(hex.Length == 8)
{
a = byte.Parse(hex.Substring(6, 2), NumberStyles.HexNumber);
}
return new Color32(r, g, b, a);
}
private Dictionary<Button, TMP_Text> buttonToTextMapping = new Dictionary<Button, TMP_Text>();
private Dictionary<Button, Color> originalButtonColors = new Dictionary<Button, Color>();
public void InitializeButtonHoverEffect(Button button, TMP_Text btnText, string hexColor)
{
Color hoverColor = HexToColor(hexColor);
if (!buttonToTextMapping.ContainsKey(button))
{
buttonToTextMapping.Add(button, btnText);
originalButtonColors.Add(button, button.image.color);
}
EventTrigger trigger = button.gameObject.AddComponent<EventTrigger>();
var pointerEnter = new EventTrigger.Entry { eventID = EventTriggerType.PointerEnter };
pointerEnter.callback.AddListener((e) => OnHoverEnter(button, hoverColor));
trigger.triggers.Add(pointerEnter);
var pointerExit = new EventTrigger.Entry { eventID= EventTriggerType.PointerExit };
pointerExit.callback.AddListener((e) => OnHoverExit(button));
trigger.triggers.Add(pointerExit);
}
private void OnHoverEnter(Button button, Color hoverColor)
{
button.image.color = hoverColor;
if(buttonToTextMapping.TryGetValue(button, out TMP_Text text))
{
text.gameObject.SetActive(true);
}
}
private void OnHoverExit(Button button)
{
if(originalButtonColors.TryGetValue(button, out Color originColor))
{
button.image.color = originColor;
}
if(buttonToTextMapping.TryGetValue(button, out TMP_Text text))
{
text.gameObject.SetActive(false);
}
}
마우스 올리기 전
마우스 올린 후