'Implicit downcast from object to int' 返回数组时发出警告

'Implicit downcast from object to int' warning when returning an Array

所以我在GameMain.js中有一个函数:

function getTarget( ... ){
   ...
   return [targetX, targetY, objectBehaviour, moveX, moveY];
}

如您所见,我 return 一个数组。数组中的变量及其类型在函数中声明。然后我想在另一个脚本中使用数组:

var targetInfo = gameMain.getTarget( ... );
target = new Vector2(targetInfo[0], targetInfo[1]);
objectBehaviour = targetInfo[2];
moveX = targetInfo[3];
moveY = targetInfo[4];

这里使用的变量也是之前声明过类型的。 一切正常,但最后 3 行发出警告: "从 'Object' 到 'int'

的隐式向下转换

我想知道为什么我会收到此警告,因为所有内容都被声明为 int 而没有任何内容应该是 Object。请注意,带有 vector2 的倒数第 4 行没有给出警告。

好的,所以我终于找到了 as int[] 的解决方案,感谢 Venkats 的评论。 事实上,我撒谎 objectBehaviour 来简化问题。它不是 int,而是 ObjectBehaviour(我创建的枚举)。 我制作了两个数组,转换它们的类型并将它们放在一个锯齿状的数组中,如下所示:

return [[targetX, targetY, moveX, moveY], [objectBehaviour]];

在 GameMain.js 中,在另一个脚本中:

var targetInfo = gameMain.getTarget( ... );
var targetInfo1 = targetInfo[0] as int[];
var targetInfo2 = targetInfo[1] as ObjectBehaviour[];
target = new Vector2(targetInfo1[0], targetInfo1[1]);
moveX = targetInfo1[2];
moveY = targetInfo1[3];
objectBehaviour = targetInfo2[0];

Ty Umair 和 Venkat 提供信息!