【问题标题】:Static array unity静态数组统一
【发布时间】:2016-08-09 03:12:40
【问题描述】:

我正在尝试创建一个统一的静态数组,在每个元素中保存一个整数,但是在测试该数组似乎对于访问它的每个对象来说都是新的。

static var tiles: float[];


function Start() {
  tiles = new float[6];
  tiles[1] = 1;
  Random();
}

function Random() {
  i = Random.Range(1, 6);
  if (i == 1) {
    tiles[1] ++;
  } else if (i == 2) {
    tiles[2] ++;
    print(tiles[2]);
  } else if (i == 3) {
    tiles[3] ++;
  } else if (i == 4) {
    tiles[4] ++;
  } else if (i == 5) {
    tiles[5] ++;
  } else if (i == 6) {
    tiles[6] ++;
  }

}

【问题讨论】:

  • 不是答案,但您可以将整个 if 语句替换为:tiles[i]++

标签: arrays static unityscript


【解决方案1】:

您何时检查这些值?场景中有多少对象附有此脚本?在我看来,您将脚本附加到多个对象并且 Random() 执行了多次。 前任。

  • Obj1 --> Start() --> 填充静态数组
  • Obj2 --> Start() --> 重新填充静态数组
  • Obj3 --> Start() --> 重新填充静态 数组

最终,所有的对象都会有相同的静态数组,由 Obj3 生成

【讨论】:

  • 是的,问题似乎是他每次都像tiles = new float[6];一样执行这个。
  • 完全正确.. Start() 会针对场景中附加了脚本的每个 GameObject 执行
猜你喜欢
  • 2019-05-15
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
相关资源
最近更新 更多