unity根据子对象名字排序
时间: 2024-10-13 09:18:41 浏览: 32
Hierarchy面板管理插件(Unity)
在Unity中,如果你想要根据子对象的名字进行排序,而不是基于特定的数值属性(如`m_iCardValue`),你可以稍微调整你的排序逻辑。这里有一个示例,假设你有一个名为`m_sCardName`的字段,存储每个`Card`对象的名称:
```csharp
// 假设Card类有一个字符串类型的m_sCardName属性
public string m_sCardName;
void SortCardsByName(List<Card> m_sCard)
{
// 使用 LINQ 的 OrderBy 方法,按照 m_sCardName 字符串进行排序
var m_listResult = m_sCard.OrderBy(a => a.m_sCardName);
// 然后遍历结果并更新子对象的顺序
foreach (var value in m_listResult)
{
foreach (var item in m_sCard)
{
if (value.m_sCardName == item.m_sCardName)
{
item.transform.SetParent(transform, false); // 移除当前父级关系
item.transform.SetSiblingIndex(m_sCard.IndexOf(value)); // 设置新位置
}
}
}
}
```
注意,这种方法会改变它们在游戏对象层次结构中的顺序,而不是简单地改变它们在数组内的索引。如果只是想在数组内部排序,而保持原有的层级结构不变,那么可能需要对上述代码做一些修改。
阅读全文