水深1mm

広く浅い個人的メモ。

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でもいけるのかもしれない。