C# 如何在同一阵列中获得具有不同标签的游戏对象| Unity3D

C# 如何在同一阵列中获得具有不同标签的游戏对象| Unity3D,c#,arrays,unity3d,C#,Arrays,Unity3d,我有两个游戏对象: 1.)螺钉(带有2个空的子对象和附加的脚本,以生成不同的预制螺钉类型) 2)板 对于Plate对象,我分配了一个脚本,该脚本获取特定的标记,并将这些带有该标记的对象放入数组中。 但是,我添加了一个方法,将两种不同类型的标记放入一个列表中,然后放入一个数组(螺钉),如下所示 螺钉的实例化发生在另一个scripts away()方法中。这两种螺丝都是x20的,所以总共有40个 尝试使用一个标记获取所有对象效果良好 使用系统集合; 使用System.Collections.Gene

我有两个游戏对象: 1.)螺钉(带有2个空的子对象和附加的脚本,以生成不同的预制螺钉类型) 2)板

对于Plate对象,我分配了一个脚本,该脚本获取特定的标记,并将这些带有该标记的对象放入数组中。 但是,我添加了一个方法,将两种不同类型的标记放入一个列表中,然后放入一个数组(螺钉),如下所示

螺钉的实例化发生在另一个scripts away()方法中。这两种螺丝都是x20的,所以总共有40个

尝试使用一个标记获取所有对象效果良好

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用System.Linq;
公共类ScrewHandler:单行为
{
/*-------------VAR声明等-------------*/
公共游戏对象[]螺钉;
/*-----------------创建数组--------------------------*/
私有void Start()
{
Log(“启动调用”);
螺钉=FindGameObjectsWithTags(新字符串[]{“螺钉A”、“螺钉B”});
//将多种类型的标记放入一个数组的自定义方法
GameObject[]FindGameObjectsWithTags(参数字符串[]标记)
{
var all=新列表();
foreach(标记中的字符串标记)
{
var temp=GameObject.FindGameObjectsWithTag(tag.ToList();
}
返回所有.ToArray();
}
}
}

如果一切正常,我应该能够在脚本的检查器中看到包含所有对象的数组。

您的自定义
FindGameObjectsWithTags
方法将在每次运行时返回一个空数组

问题是,您永远不会向变量
all
添加任何元素,因此转换为数组也会导致空数组

我建议你做以下几点:

GameObject[]FindGameObjectsWithTags(参数字符串[]标记)
{
var all=新列表();
foreach(标记中的字符串标记)
{
all.AddRange(GameObject.FindGameObjectsWithTag(tag.ToList());
}
返回所有.ToArray();
}

编辑:打字错误

坦克!在成功地控制了那条线之后,事情就解决了。:)