我的剧本中有两个列表。
public List<GameObject> l1 = new List<GameObject>();
public List<GameObject> l2= new List<GameObject>();
我想从l2
列表大小设置l1
列表大小。
我已经尝试了list.Capacity
但是当我运行游戏时,Unity检查器中的列表大小仍然显示为0
但是,当我调试list.Capacity
时,它会显示我的价值。
所以我想从C#设置我的列表大小。
答案 0 :(得分:0)
您必须使用List.Count
在l2
构造函数中设置List
的容量,并且必须在函数中完成。它从编辑器中取l1
的大小,并用它来设置l2
的大小。
更改容量:
public List<GameObject> l1 = new List<GameObject>();
public List<GameObject> l2;
void Start()
{
l2 = new List<GameObject>(l1.Count);
Debug.Log("Capacity: " + l2.Capacity);
}
要复制值(这将更改编辑器中显示的计数或大小:
public List<GameObject> l1 = new List<GameObject>();
public List<GameObject> l2;
void Start()
{
l2 = new List<GameObject>(l1.Count);
Debug.Log("Capacity: " + l2.Capacity);
for (int i = 0; i < l1.Count; i++)
{
l2.Add(l1[i]);
}
Debug.Log("Count: " + l2.Count);
}
答案 1 :(得分:0)
问题的关键在于,列表的容量,数量和大小意味着什么。设置列表的容量不会影响列表的实际大小。列表的大小为0,因为列表中没有添加任何内容。列表的大小(即计数)是动态的,如果您继续向列表中添加项目,它将自动增加。这与大小为静态的数组不同。
列表的容量用于优化列表的性能。即如果您知道列表中只有X个条目,则可以将容量设置为X.但是,如果添加的条目多于X,则列表需要重新构建以处理其他条目。这是自动完成的。
如果您想要一个具有静态大小的数据结构,那么数组将是更好的选择。