以下の内容はhttps://hacchi-man.hatenablog.com/entry/2021/01/07/220000より取得しました。


【Unity】Hierarchy 上で選択したオブジェクトのもつ RaycastTarget をすべて false にする

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 等でも利用することがあると思うので、ちゃんとやりたい場合は独自にコードを記述する必要があります




以上の内容はhttps://hacchi-man.hatenablog.com/entry/2021/01/07/220000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14