我正在尝试将所有标签放入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, trans.position.y), Quaternion.identity);
}
}
这可能不是一个好方法,所以如果有人有更好的主意,请告诉我。
编辑:
这些是我使用的对象
答案
我可以遍历所有转换,只需执行transform.gameObject
就可以将这些转换还原回gameObject
感谢您的帮助!
答案 0 :(得分:2)
我认为您可以使用foreach遍历所有子项:
如果上述方法无效,请尝试使用Transform:
foreach (Transform child in worldObjectPrefab.transform)
{
// Here you can access child.tag and add do what you need to do.
}
对不起,但我现在无法访问Unity。 让我知道是否有帮助。
答案 1 :(得分:0)
在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
。