gpt4 book ai didi

c# - 如何使用其属性之一选择类对象

转载 作者:行者123 更新时间:2023-11-30 22:55:43 24 4
gpt4 key购买 nike

我正在使用 Visual Studio 在 Unity 中使用 C# 进行编码。我试图通过使用“位置”值来选择一个由类组成的对象。我很难解释它,但本质上我有一个名为 Counties 的 Canvas ,里面有几个 UI 对象,例如 Leinster 和 Connacht:

Screenshot

我遍历该 Canvas 县的所有子级以将它们一一选中。

for (int i = 0; i < Counties.transform.childCount; i++)
{
Transform t = Counties.transform.GetChild(i);
Current = t.name;
}

但是,我还需要更改每个子项的一些值,因为它们在我的脚本中都有一个对应于每个子项的对象。例如,在下面的代码中,对应于 Leinster 的对象。

public County Leinster = new County(2630000, "NorthernIreland", "Connacht", "Munster", "Wales", 0);

我不知道如何将这两者联系起来。我在对象中放入了一个“位置”值,这是最后一个数字。对于伦斯特,它是 0,因为这是 Canvas 县中的第一个 child ,下一个 (Connacht) 将是 1,依此类推。我的问题基本上是如何使用该数字来选择与其“位置”具有相同数字的相应类对象?谢谢你的任何建议。

最佳答案

如果我理解正确,您想访问分配给您 parent 的 child 的脚本组件。您可以使用 GetComponent 方法:

for (int i = 0; i < Counties.transform.childCount; i++)
{
Transform t = Counties.transform.GetChild(i);
Current = t.name;
County county = t.GetComponent<County>();

//do something with county object...
}

如果没有组件,您也可以先将组件添加到您的对象中:

for (int i = 0; i < Counties.transform.childCount; i++)
{
Transform t = Counties.transform.GetChild(i);
Current = t.name;
County county = t.GetComponent<County>();
if (county == null)
county = t.gameObject.AddComponent<County>();

//do something with county object...
county.name = t.name;
}

如果您正在寻找一种访问您的县的简单方法,您还可以使用字典:

using System.Collections.Generic;

Dictionary<string, County> Counties = new Dictionary<string, County>();

//add County to dictionary
Counties.Add("NorthernIreland", new County(2630000, "NorthernIreland", "Connacht", "Munster", "Wales", 0));

//get County from dictionary
Counties["NorthernIreland"] //and do something with it...

关于c# - 如何使用其属性之一选择类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55031134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com