UnityのButtonのクリック範囲をRectTransformで制限する方法
円形の制限はあったが矩形での制限がなかったのでメモ
using UnityEngine; using System.Collections; using UnityEngine.EventSystems; using UnityEngine.UI; public class CustomButton: Button, ICanvasRaycastFilter { [SerializeField] private RectTransform targetRectTransform = null; [SerializeField] private Camera cam = null; public bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera) { if (targetRectTransform == null) return true; return RectTransformUtility.RectangleContainsScreenPoint(targetRectTransform, sp, cam); } }
Buttonを継承したときにはSerializeFieldでもUI上にRectTransformの項目が表示されなかった。
何とかうまいことやれば出るのだろう。
とりあえずInspectorをDebugモードにしてComponentをセットして動作した...気がする。
(※↑最悪の手段)
カメラについてはCamera.mainでもいけるのかもしれない。