获取对象中所有子对象中所有标签的列表

我正在尝试将所有标签放入list<string>中,但看来我只能在我最大的尝试是使用toString()的字符时循环遍历标签,但这还是行不通的

public List<string> GetWorldObjectsTag()
{
    var worldObjects = new List<string>();

    foreach (string child in worldOBjectsPrefab.gameObject.tag.ToString())
    {
        worldObjects.Add(child);
    }

    return worldObjects;
}
foreach(string name in currentWorldGen.GetWorldObjectsTag())
{
    Debug.Log(name);
    if (name == sawBlade.tag)
    {
        Instantiate(sawBlade,new Vector2(trans.position.x + Camera.main.transform.position.x + 20,trans.position.y),Quaternion.identity);

    }
    else
    {
        Instantiate(testBlock,new Vector2( trans.position.x + Camera.main.transform.position.x + 20,Quaternion.identity);
    }
}

这可能不是一个好方法,所以如果有人有更好的主意,请告诉我。

编辑:

这些是我使用的对象

获取对象中所有子对象中所有标签的列表

答案 我可以遍历所有转换,只需执行transform.gameObject就可以将这些转换还原回gameObject 感谢您的帮助!

eqiu3333 回答:获取对象中所有子对象中所有标签的列表

我认为您可以使用foreach遍历所有子项:

如果上述方法无效,请尝试使用Transform:

foreach (Transform child in worldObjectPrefab.transform)
{
    // Here you can access child.tag and add do what you need to do.
}

对不起,但我现在无法访问Unity。 让我知道是否有帮助。

,

在Unity源代码中,您可以看到Transform实现了接口IEnumerable,因此您基本上可以做到

public List<string> GetWorldObjectsTag()
{
    var listOfTags = new List<string>();

    foreach(Transform child in worldOBjectsPrefab.transform)
    {
        listOfTags.Add(child.name);
    }

    return listOfTags;
}

非常相似的是使用Linq Select之类的

public List<string> GetWorldObjectsTag()
{
    return ((IEnumerable<Transform>) worldOBjectsPrefab.transform).Select(child => child.tag).ToList();
}

由于在两种情况下它都是无类型的IEnumerable,因此您必须明确告诉它使用类型Transform

本文链接:https://www.f2er.com/3111005.html

大家都在问