我需要在 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 個呢?在宣告中復制新 List... 100 次有點愚蠢。
uj5u.com熱心網友回復:
嘗試這個。在這里測驗
創建一個串列變數陣列。將每個 Array 專案初始化為一個新的 GameObject 串列。然后你可以添加到所述陣列的串列中。
using System;
using System.Text;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
// create array of lists
List<GameObject>[] COBSP1 = new List<GameObject>[5]; //charactersOnBoardSortedP1
// setup lists
COBSP1[0] = new List<GameObject>();
COBSP1[1] = new List<GameObject>();
COBSP1[2] = new List<GameObject>();
COBSP1[3] = new List<GameObject>();
COBSP1[4] = new List<GameObject>();
// add objects to said list
COBSP1[0].Add(new GameObject());
COBSP1[0].Add(new GameObject());
COBSP1[0].Add(new GameObject());
COBSP1[0].Add(new GameObject());
COBSP1[1].Add(new GameObject());
COBSP1[1].Add(new GameObject());
COBSP1[1].Add(new GameObject());
COBSP1[1].Add(new GameObject());
COBSP1[2].Add(new GameObject());
COBSP1[2].Add(new GameObject());
COBSP1[2].Add(new GameObject());
COBSP1[2].Add(new GameObject());
COBSP1[3].Add(new GameObject());
COBSP1[3].Add(new GameObject());
COBSP1[3].Add(new GameObject());
COBSP1[3].Add(new GameObject());
COBSP1[4].Add(new GameObject());
COBSP1[4].Add(new GameObject());
COBSP1[4].Add(new GameObject());
COBSP1[4].Add(new GameObject());
}
}
uj5u.com熱心網友回復:
嘗試這個
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});
}
uj5u.com熱心網友回復:
實作它的最簡單方法如下:
int arraySize = 5;
List<GameObject>[] charactersOnBoardSortedP1 = Enumerable.Repeat(new List<GameObject>(), arraySize).ToArray();
這將創建填充空的指定大小的陣列 List<GameObject>()
如果你希望有串列,GameObject你可以稍微修改一下上面的代碼。
int arraySize = 5;
List<GameObject>[] charactersOnBoardSortedP1 = Enumerable.Repeat(new List<GameObject> { new GameObject()}, arraySize).ToArray();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/351262.html
