Image を貼り付けた任意の GameObject にちょっと記述を追加するだけで、ボタンの代わりにする事ができます。
- 絵の切り替えだけでボタンを作りたい
- 独自の表示演出をいれたい
- ボタンを押せなくしたい。その際の視覚的な部分も調整したい
などなど、ボタンに独自の機能を追加したい場合、こちらの方が楽に色々追加しやすいです。
表題では Image としましたが、Canvas 下に置く UI であれば、なんにでも使えると思います。
ソースコード
using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; [RequireComponent(typeof(Image))] public class ButtonSample : MonoBehaviour, IPointerClickHandler, IPointerDownHandler, IPointerUpHandler, IPointerEnterHandler, IPointerExitHandler { Image image; void Start() { image = GetComponent<Image>(); } /// <summary> /// ボタンをクリックした時 /// </summary> void IPointerClickHandler.OnPointerClick(PointerEventData eventData) { Debug.Log("CLICK"); image.color = new Color(1f, 0f, 0f); } /// <summary> /// ボタンを押した瞬間 /// </summary> void IPointerDownHandler.OnPointerDown(PointerEventData eventData) { Debug.Log("DOWN"); image.color = new Color(1f, 0.7f, 0.7f); } /// <summary> /// ボタンを離した瞬間 /// </summary> void IPointerUpHandler.OnPointerUp(PointerEventData eventData) { Debug.Log("UP"); image.color = new Color(1f, 1f, 1f); } /// <summary> /// ボタンにマウスカーソルが触れた /// </summary> void IPointerEnterHandler.OnPointerEnter(PointerEventData eventData) { image.color = new Color(0.9f, 0.9f, 1f); Debug.Log("ENTER"); } /// <summary> /// ボタンからマウスカーソルが離れた /// </summary> void IPointerExitHandler.OnPointerExit(PointerEventData eventData) { image.color = new Color(1f, 1f, 1f); Debug.Log("EXIT"); } }