【发布时间】:2016-03-13 11:43:08
【问题描述】:
我创建了一个包含 222 行和 3 列的数组。之后,我将一些值 (x,y,z) 放在第 222 行。现在我想做以下事情:
// create an array of 222 rows and 3 columns filled with zeros
public float[,] arrayPosSpheres = new float[222, 3];
enter code here//loop change of x value for each of the spheres
for (int k = 220; k = 0; k--) {
arrayPosSpheres [k, 0] = arrayPosSpheres [k + 1, 0] - sizeSphere * overlay;
}
所以我想要一个值第 220 行第 0 列,这将是第 221 行和第 0 列的值减去一些东西。但是,我得到了一个错误。
Assets/Scripts/SineWaveSpheres.cs(138,51):错误 CS0019:运算符 -' cannot be applied to operands of typefloat' 和 `UnityEngine.Vector3'
Assets/Scripts/SineWaveSpheres.cs(136,17):错误 CS0029:无法隐式转换类型 int' tobool'
我该怎么做?
【问题讨论】:
-
错误信息是不言自明的。您可能希望在进行计算时使用
UnityEngine.Vector3的length。另外,推荐阅读-stackoverflow.com/help/mcve -
嗯,第二个错误可能与for循环中的
k = 0有关。这必须是一个布尔表达式,所以类似于k >= 0或k == 0。根据错误代码(第 51 行),另一个错误发生在其他地方,这意味着您尝试使用无法直接执行的float和Vector3进行减法运算。我需要查看更多代码才能进一步说明。 -
使用 List 对象而不是数组将更容易将项目添加到现有数组/列表对象。
-
* 操作数在 - 操作数上具有总裁。所以 sizeShere 被叠加乘以并得到一个向量。然后向量不能从你的 [222,3] 数组中减去。
标签: c# arrays unity3d operation