uGUI では UI最適化 にあるように、Raycast が不要な オブジェクトに対して Raycast Target をつけることは最適とされていません
しかし Unity はオブジェクトを生成時にデフォルトで true にしてしまうためわざわざチェックを外すのが面倒になる
そのため、オブエジェクトを選択して実行すれば、すべての Raycast Target を false にしてくれるツールを作成
ボタンがある場合は true のままにしたいとかもあると思うので、そういったこともできるようなのを追加しました
using UnityEditor; using UnityEngine.UI; public static class GraphicTool { [MenuItem("Tools/SetRaycastDisable")] private static void SetRaycastDisable() { foreach (var obj in Selection.gameObjects) { var graphics = obj.GetComponentsInChildren<Graphic>(); foreach (var graphic in graphics) { graphic.raycastTarget = false; } } } // ボタンがあれば Raycast を false にしない [MenuItem("Tools/SetRaycastDisableNoButton")] private static void SetRaycastDisableNoButton() { foreach (var obj in Selection.gameObjects) { var graphics = obj.GetComponentsInChildren<Graphic>(); foreach (var graphic in graphics) { if (graphic.GetComponent<Button>() != null) continue; graphic.raycastTarget = false; } } } }
ScrollView 等でも利用することがあると思うので、ちゃんとやりたい場合は独自にコードを記述する必要があります