在unity中使用Selection.gameObjects选择的物体实际是无序的,他们的索引跟物体在Hierarchy的顺序不对应。
例如:下面一段代码是你想实现的功能。
[MenuItem("Select/sel")]
static void SelectObject()
{
foreach (var item in Selection.gameObjects)
{
Debug.Log(item.name);
}
}
结果如图:
可以很明显的看出来输出的顺序是无序的。如果想输出有序,请继续往下看。
[MenuItem("Select/sel")]
static void SelectObject()
{
var SelecteObjects=Selection.gameObjects.OrderBy(_ => _.transform.GetSiblingIndex());
foreach (var item in SelecteObjects)
{
Debug.Log(item.name);
}
}