Arrays Unity3D将字符串插入数组

Arrays Unity3D将字符串插入数组,arrays,unity3d,unityscript,Arrays,Unity3d,Unityscript,我使用的是Unity3D 4.2,有一个按钮可以触发: function SubmitMove() { p1cube = new Array (); p2cube = new Array (); var allCubeList = GameObject.FindGameObjectsWithTag("cube"); for(var allCube: GameObject in allCubeList) { if(allCube.GetCompon

我使用的是Unity3D 4.2,有一个按钮可以触发:

function SubmitMove()
{
p1cube = new Array ();
p2cube = new Array ();
    var allCubeList = GameObject.FindGameObjectsWithTag("cube");
    for(var allCube: GameObject in allCubeList) 
        {
        if(allCube.GetComponent(CubeARDP).cubeState == "1")
        {
        p1cube.Push(allCube.name);
        }
        else if(allCube.GetComponent(CubeARDP).cubeState == "2")
        {
        p2cube.Push(allCube.name);
        }
        }

}
那么如何使用p1cube.Push(allCube.name)给我一些错误:

MissingMethodException: System.String[].Push
Boo.Lang.Runtime.DynamicDispatching.MethodDispatcherFactory.ProduceExtensionDispatcher ()
Boo.Lang.Runtime.DynamicDispatching.MethodDispatcherFactory.Create ()
Boo.Lang.Runtime.RuntimeServices.DoCreateMethodDispatcher (System.Object target, System.Type targetType, System.String name, System.Object[] args)
Boo.Lang.Runtime.RuntimeServices.CreateMethodDispatcher (System.Object target, System.String name, System.Object[] args)
Boo.Lang.Runtime.RuntimeServices+<Invoke>c__AnonStorey15.<>m__9 ()
Boo.Lang.Runtime.DynamicDispatching.DispatcherCache.Get (Boo.Lang.Runtime.DynamicDispatching.DispatcherKey key, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)
Boo.Lang.Runtime.RuntimeServices.GetDispatcher (System.Object target, System.String cacheKeyName, System.Type[] cacheKeyTypes, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)
Boo.Lang.Runtime.RuntimeServices.GetDispatcher (System.Object target, System.Object[] args, System.String cacheKeyName, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)
Boo.Lang.Runtime.RuntimeServices.Invoke (System.Object target, System.String name, System.Object[] args)
UnityScript.Lang.UnityRuntimeServices.Invoke (System.Object target, System.String name, System.Object[] args, System.Type scriptBaseType)
axisrotateDynamicParenting.SubmitMove () (at Assets/component_tested/axisrotateDynamicParenting.js:468)
axisrotateDynamicParenting.OnGUI () (at Assets/component_tested/axisrotateDynamicParenting.js:285)
MissingMethodException:System.String[].Push
Boo.Lang.Runtime.DynamicDispatch.MethodDispatcherFactory.ProduceExtensionDispatcher()
Boo.Lang.Runtime.DynamicDispatch.MethodDispatcherFactory.Create()
Boo.Lang.Runtime.RuntimeServices.DoCreateMethodDispatcher(System.Object目标,System.Type目标类型,System.String名称,System.Object[]参数)
Boo.Lang.Runtime.RuntimeServices.CreateMethodDispatcher(System.Object目标、System.String名称、System.Object[]参数)
Boo.Lang.Runtime.RuntimeServices+c_uanostorey15.m_u9()
Boo.Lang.Runtime.dynamicDispatch.DispatcherCache.Get(Boo.Lang.Runtime.dynamicDispatcher.DispatcherKey,Boo.Lang.Runtime.dynamicDispatcher.DispatcherFactory工厂)
Boo.Lang.Runtime.RuntimeServices.GetDispatcher(System.Object target、System.String cacheKeyName、System.Type[]CacheKeyType、Boo.Lang.Runtime.DynamicDispatcheng.DispatcherFactory)
Boo.Lang.Runtime.RuntimeServices.GetDispatcher(System.Object目标,System.Object[]参数,System.String cacheKeyName,Boo.Lang.Runtime.DynamicDispatcher.DispatcherFactory工厂)
Boo.Lang.Runtime.RuntimeServices.Invoke(System.Object目标、System.String名称、System.Object[]参数)
UnityScript.Lang.UnityRuntimeServices.Invoke(System.Object目标,System.String名称,System.Object[]参数,System.Type scriptBaseType)
AxisRotatedDynamicParenting.SubmitMove()(位于Assets/component\u tested/AxisRotatedDynamicParenting.js:468)
AxisRotatedDynamicParenting.OnGUI()(位于Assets/component\u tested/AxisRotatedDynamicParenting.js:285)

知道发生了什么吗??我检查了Unity脚本参考,无论我做什么似乎都没问题。任何帮助都会很好。谢谢

看起来,
p1cube
不是一个常规的JS数组;不知何故,您有一个本机.NET数组。它们不可调整大小,因此没有
Push
方法(因为根据定义“Push”会使数组变长)

我正在解析文档,请原谅我的猜测。但是,如果数组被声明为
String[]
,那么它将是一个固定大小的本机.NET数组。为了实现您想要的功能,您可以将这两个数组声明为
Array
,或者让您的函数创建它们自己的本地JS数组,在添加完内容后将其转换为
String[]


至于如何/为什么可以将
数组
走私到声明为
String[]
的变量中?我一点也不知道。但是JS的类型系统介于“非常动态”和“我刚刚改变了
对象的含义”之间。也许这是其中的一部分。

我如何才能专门添加JS数组?我只是
var p1cube:String[]当声明数组时。@sooon:如果让我猜的话<代码>变量p1cube:数组。但实际上我以前从未见过Unity脚本,所以这只是一个猜测PI将我的数组声明为:
var p1cube=新数组([])并且它可以工作。我从中找到了解决办法。谢谢你的洞察力@cHao,你救了我一天:)