首页 > 解决方案 > Unity:列表变量数组。如何在 C# 中正确声明它

问题描述

我需要在 Unity 中声明一个列表变量数组。数组大小是固定的,它是 5。我的代码按我的意愿工作,但我认为必须有更好、更短的方法来做到这一点:

public List<GameObject>[] charactersOnBoardSortedP1 = new List<GameObject>[] {new List<GameObject>(), new List<GameObject>(), new List<GameObject>(), new List<GameObject>(), new List<GameObject>() };

我试着这样做:

public List<GameObject>[] charactersOnBoardSortedP1 = new List<GameObject>[5];

但我有一个错误:对象引用未设置为对象的实例。

有什么方法可以更简单地声明我的变量吗?我的意思是如果我的阵列只有 5 个插槽就可以了,但如果是 100 个呢?复制新列表有点愚蠢......在声明中复制了 100 次。

标签: c#arrayslistunity3d

解决方案


尝试这个

var  arraySize=6; //or what size you need

List<GameObject>[] charactersOnBoardSortedP1 = new List<GameObject>[arraySize];

charactersOnBoardSortedP1=  charactersOnBoardSortedP1
                           .Select(obsp => obsp = new List<GameObject>()) 
                            .ToArray();

或者如果您需要同时启动更多的东西

for (var i=0; i<  charactersOnBoardSortedP1.Length; i++)
{
    charactersOnBoardSortedP1[i]=new List<GameObject>();
    // if you need to add some elements in the same time
    charactersOnBoardSortedP1[i].Add(new GameObject {Id=i});
}

推荐阅读