不能分配数组元素[重复]。

问题描述 投票:-2回答:2

在我的脚本的开头,我有这样一行。

Color[] oldColor;

后来我想用元素来填充它,所以我写了一个函数。

for (int i = 0; i < targets.Length; i++)
        oldColor[i] = targets[i].color;

然而,第一行用绿色划线,它说我不能分配一个值,除非它的默认值(是null).另外,当我在Unity中运行它时,for循环下面的那行(它应该把值从一个数组复制到另一个数组)给我NullReferenceException.

'target'被定义为

SpriteRenderer[] targets;

它的所有元素都是通过检查员分配的。

我不明白发生了什么。为什么它不分配变量?

c# arrays unity3d
2个回答
4
投票

在向数组中添加元素之前,你必须先初始化一个数组并设置它的大小。

Color[] oldColor = new Color[10];   // just an example - use whatever size is appropriate

然后你可以设置它的元素。

一个更灵活的解决方案(如果你事先不知道大小)是使用 List 来代替。

List<Color> oldColor = new List<Color>();

for(...)
{
    oldColor.Add(targets[i].color);
}

0
投票

用linq你可以直接把target.color的值复制到oldColor,没有数组大小的问题。

using System.Linq;
:
:
Color[] oldColor = targets.Select(s => s.color).ToArray();
© www.soinside.com 2019 - 2024. All rights reserved.