Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获得LayerMask数组中任何层上的所有重叠碰撞R2D_C#_Unity3d - Fatal编程技术网

C# 如何获得LayerMask数组中任何层上的所有重叠碰撞R2D

C# 如何获得LayerMask数组中任何层上的所有重叠碰撞R2D,c#,unity3d,C#,Unity3d,我需要选择数组中的所有元素 public LayerMask[] ground; 我有一个问题“[]内的索引数量错误;预期为1”,问题是: 使用逻辑OR|运算符组合掩码,然后对组合的掩码执行一个重叠循环,然后可以调用将给出多个结果的重叠循环的覆盖。您必须创建一个ContactFilter2D才能执行此操作: // Initialize the results list once and keep it around to avoid unnecessary // garbage collec

我需要选择数组中的所有元素

public LayerMask[] ground;
我有一个问题“[]内的索引数量错误;预期为1”,问题是:


使用逻辑OR|运算符组合掩码,然后对组合的掩码执行一个重叠循环,然后可以调用将给出多个结果的
重叠循环的覆盖。您必须创建一个
ContactFilter2D
才能执行此操作:

// Initialize the results list once and keep it around to avoid unnecessary 
// garbage collection
List<Collider2D> overlapResults;

void Awake()
{
    overlapResults = new List<Collider2D>(); 
}

// ... in the method in question...

int allMask = 0; 
foreach (LayerMask lm in ground) 
{ 
    allMask = allMask | lm.value; 
} 
ContactFilter2D filter = new ContactFilter2D();
filter.SetLayerMask(allMask);

Physics2D.OverlapCircle(bottom.position, radius, filter, overlapResults);
for (Collider2D overlapResult in overlapResults) 
{
    // do stuff with overlapResult
}
//初始化结果列表一次,并保留它以避免不必要的更改
//垃圾收集
列出结果;
无效唤醒()
{
重叠结果=新列表();
}
// ... 在所讨论的方法中。。。
int allMask=0;
foreach(地面上的图层)
{ 
allMask=allMask | lm.值;
} 
ContactFilter2D filter=新的ContactFilter2D();
filter.SetLayerMask(所有掩码);
Physics2D.重叠圆(底部、位置、半径、过滤器、重叠结果);
对于(碰撞R2D重叠结果在重叠结果中)
{
//做有结果的事
}

大家好,欢迎来到stack overflow。调试问题需要包含足够的信息1。解释所需的行为和2。重现问题。有关更多信息,请参阅。从您目前共享的内容来看,
ground
似乎不是一种使用
[0][1]
进行双重索引的类型。关于编辑后的代码,
ground
似乎不是一个二维数组,也不是支持带有两个索引的
[]
运算符的其他类型。如果你分享你的帖子1,你会更容易帮助你。地面是什么类型的。二,。你想做什么。嗨,我需要选择ArrayKay中的所有元素,真的很欣赏你希望
ground[0,ground.Length]
代表什么?为什么首先要使用数组?在
LayerMask
字段中,您可以通过Inspector选择多个层…@derHugo没有特别的原因,这只是问题中使用的类型。其他人可以找到这篇文章,寻求帮助处理编辑器脚本中收集的LayerMask列表,这个答案可以帮助他们。@derHugo我没有注意到,谢谢^^^@Brian你找到这个问题的解决方案了吗?如果我的回答有帮助,请考虑。
// Initialize the results list once and keep it around to avoid unnecessary 
// garbage collection
List<Collider2D> overlapResults;

void Awake()
{
    overlapResults = new List<Collider2D>(); 
}

// ... in the method in question...

int allMask = 0; 
foreach (LayerMask lm in ground) 
{ 
    allMask = allMask | lm.value; 
} 
ContactFilter2D filter = new ContactFilter2D();
filter.SetLayerMask(allMask);

Physics2D.OverlapCircle(bottom.position, radius, filter, overlapResults);
for (Collider2D overlapResult in overlapResults) 
{
    // do stuff with overlapResult
}