笔者也是废了九牛二虎之力才发现这个API并选择一种相对效率高还简单的实现方法

克服了同层级空气墙的问题
在这里插入图片描述
在这里插入图片描述
这样可以实现只跟列表里的物体能发生碰撞

在使用之前请确保:空气墙 原本 可以与列表指定的物体发生碰撞
然后本脚本会自动取消列表外的全部碰撞,以实现指定的空气墙效果

using System.Linq;
using UnityEngine;

public class AppointCollider2D : MonoBehaviour
{
    private Collider2D[] colliders; // 用于存储自身的所有Collider2D组件

    public Collider2D[] targets = new Collider2D[0];

    public void OnCollisionEnter2D(Collision2D collision)
    {
        colliders = GetComponents<Collider2D>();
        var allColliders = collision.gameObject.GetComponents<Collider2D>();
        foreach (var otherCollider in allColliders)
        {
            foreach (var thisCollider in colliders)
            {
                bool exist = false;
                foreach(var target in targets)
                {
                    if(target==otherCollider)
                    {
                        exist = true;
                        break;
                    }
                }
                if(!exist)
                Physics2D.IgnoreCollision(otherCollider, thisCollider, true);
            }
                
        }
    }

    public void Refresh()
    {
        
    }

}