123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.UI;
- using System;
- [RequireComponent(typeof(EventTrigger))]
- public class ButtonV2 : MonoBehaviour
- {
- EventTrigger trigger;
- public Image image;
- public Text text;
- [SerializeField]
- public BasicUIEffect imageFx;
- [SerializeField]
- public BasicUIEffect textFx;
- public float fxSpeed = 0.1f;
- public AudioClip hoverSfx;
- public AudioClip selectSfx;
- void Start()
- {
- trigger = GetComponent<EventTrigger>();
- EventTrigger.Entry entry1 = new EventTrigger.Entry();
- entry1.eventID = EventTriggerType.PointerEnter;
- entry1.callback.AddListener(OnMouseEnter);
- EventTrigger.Entry entry2 = new EventTrigger.Entry();
- entry2.eventID = EventTriggerType.PointerExit;
- entry2.callback.AddListener(OnMouseExit);
- EventTrigger.Entry entry3 = new EventTrigger.Entry();
- entry3.eventID = EventTriggerType.PointerDown;
- entry3.callback.AddListener((BaseEventData e)=>{AudioSource.PlayClipAtPoint(selectSfx, Vector3.zero); OnMouseExit(e);});
-
- EventTrigger.Entry entry4 = new EventTrigger.Entry();
- entry4.eventID = EventTriggerType.PointerUp;
- entry4.callback.AddListener(OnMouseEnter);
- trigger.triggers.Add(entry1);
- trigger.triggers.Add(entry2);
- trigger.triggers.Add(entry3);
- trigger.triggers.Add(entry4);
- if(image!=null)defSizeImg = image.rectTransform.sizeDelta;
-
- if(text!=null)defTextImg = text.rectTransform.sizeDelta;
- }
- Vector2 defSizeImg;
- Vector2 defTextImg;
- // Update is called once per frame
- void Update()
- {
- if (active)
- {
- if (image != null)
- {
- image.color = Color.Lerp(image.color, imageFx.activeColor, fxSpeed);
- image.rectTransform.sizeDelta = Vector2.Lerp(image.rectTransform.sizeDelta, defTextImg * imageFx.activeSize, fxSpeed);
- }
- if (text != null)
- {
- text.color = Color.Lerp(text.color, textFx.activeColor, fxSpeed);
- text.rectTransform.sizeDelta = Vector2.Lerp(text.rectTransform.sizeDelta, defTextImg * imageFx.activeSize, fxSpeed);
- }
- }
- else
- {
- if (image != null)
- {
- image.color = Color.Lerp(image.color, imageFx.idleColor, fxSpeed);
- image.rectTransform.sizeDelta = Vector2.Lerp(image.rectTransform.sizeDelta, defTextImg, fxSpeed);
- }
- if (text != null)
- {
- text.color = Color.Lerp(text.color, textFx.idleColor, fxSpeed);
- text.rectTransform.sizeDelta = Vector2.Lerp(text.rectTransform.sizeDelta, defTextImg, fxSpeed);
- }
- }
- }
- bool active = false;
- void OnMouseEnter(BaseEventData e)
- {
- active = true;
- if (hoverSfx != null) AudioSource.PlayClipAtPoint(hoverSfx, Vector3.zero);
- }
- void OnMouseExit(BaseEventData e)
- {
- active = false;
- }
- }
- [Serializable]
- public class BasicUIEffect
- {
- public Color idleColor;
- public Color activeColor;
- public float activeSize;
- }
|