将UnityScript转换为C#:数组&;GetComponent

将UnityScript转换为C#:数组&;GetComponent,c#,unity3d,unityscript,C#,Unity3d,Unityscript,我正在将UnityScript中的一个Unity项目翻译成C#。我已经翻译了项目的大部分内容,但我遇到了一些问题: 第一个问题与GetComponent有关。我有一个文件EnnemyController.cs,其中包含许多用于获取/设置敌人的函数。但是在完成所有这些函数之前,我需要初始化characterController private CharacterController characterController; characterController = GetComponent<

我正在将UnityScript中的一个Unity项目翻译成C#。我已经翻译了项目的大部分内容,但我遇到了一些问题:

第一个问题与
GetComponent
有关。我有一个文件
EnnemyController.cs
,其中包含许多用于获取/设置敌人的函数。但是在完成所有这些函数之前,我需要初始化
characterController

private CharacterController characterController;
characterController = GetComponent<CharacterController>();
我不知道如何翻译这种东西,你可以在这里看到整个文件:


对于finish,我想知道IEnumerator和IEnumerable之间的区别。

似乎您的第一个错误是因为您在任何方法之外调用了
GetComponent()
,请尝试在Start()方法上执行此操作。
您可以在一个简单的c#数组中转换js数组(如
int[]arrayOfInts=new int[20];
)或在不确定数组将包含的元素数量时使用类似的方法。现在,您必须确定将使用哪种类型的元素。

最后一个问题已经在这里得到了回答:

Yeah GetComponent()在任何方法之外被调用,因为我想在类中的任何地方访问这个元素。如果我在Start()中调用它,我可以在任何地方访问这个元素?对于数组,问题更多地与数组的数组=多维数组联系在一起?如果你想访问任何应该在你的方法之外声明的元素,但是如果你也想在任何时候访问元素,你应该在做任何事情之前获得引用,这里你有2个选项;1.-在代码中将元素声明为公共元素,并将元素从层次结构拖放到Inspector(ie;)中的脚本中,或2.-在方法中通过代码获取引用,在这种情况下,您可以使用GetComponent在Start或Awake中实现这一点。///c#上mult dim array的语法:感谢您的回答,伙计,这对我帮助很大!)
var connected : Array = Array ();
static var waypoints : Array = Array ();
var objects : Object [] = FindObjectsOfType ( AutoWayPoint );
waypoints = Array ( objects );