【问题标题】:Array subtraction in a loop循环中的数组减法
【发布时间】: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.Vector3length。另外,推荐阅读-stackoverflow.com/help/mcve
  • 嗯,第二个错误可能与for循环中的k = 0有关。这必须是一个布尔表达式,所以类似于k >= 0k == 0。根据错误代码(第 51 行),另一个错误发生在其他地方,这意味着您尝试使用无法直接执行的 floatVector3 进行减法运算。我需要查看更多代码才能进一步说明。
  • 使用 List 对象而不是数组将更容易将项目添加到现有数组/列表对象。
  • * 操作数在 - 操作数上具有总裁。所以 sizeShere 被叠加乘以并得到一个向量。然后向量不能从你的 [222,3] 数组中减去。

标签: c# arrays unity3d operation


【解决方案1】:

for 循环中,您将0 分配给k,而不是检查k 是否等于或大于k

for (int k = 220; k >= 0; k--)

附带说明,请尽量避免使用固定数字。 arrayPosSpheres.GetLength(0); 将返回行的长度,即 222。用它初始化 k 并从中减去 2 作为索引和最后的固定值

for (int k = arrayPosSpheres.GetLength(0) - 2; k >= 0; k--)

【讨论】:

    猜你喜欢
    • 2020-08-14
    • 2023-03-13
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多