コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Physics2DSettings の Layer Collision Matrix のすべてのチェックをオフにするエディタ拡張

ソースコード

using UnityEditor;
using UnityEditorInternal;
using UnityEngine;

public static class ExampleClass
{
    [MenuItem( "Tools/Example" )]
    private static void Example()
    {
        var layers = InternalEditorUtility.layers;
        var length = layers.Length;

        for ( int i = 0; i < length; i++ )
        {
            var layerName1 = layers[ i ];

            for ( int j = i; j < length; j++ )
            {
                var layerName2 = layers[ j ];
                var layer1 = LayerMask.NameToLayer( layerName1 );
                var layer2 = LayerMask.NameToLayer( layerName2 );

                Physics2D.IgnoreLayerCollision( layer1, layer2, true );
            }
        }
    }
}

使い方

上記のスクリプトを Unity プロジェクトの「Editor」フォルダに追加して
「Tools>Example」を選択すると

f:id:baba_s:20180131163549p:plain

Physics2DSettings の Layer Collision Matrix の
すべてのチェックをオフにすることができます