将 UnityScript 转换为 C#:Array 和 GetComponent

Translation UnityScript to C# : Array & GetComponent

我正在努力将一个最初使用 UnityScript 的 Unity 项目转换为 C#。我已经翻译了项目的大部分内容,但我遇到了一些问题:

第一个问题与GetComponent有关。我有一个文件 EnnemyController.cs,里面有很多 get/set 敌人的功能。但在所有这些功能之前,我需要初始化 characterController.

private CharacterController characterController;
characterController = GetComponent<CharacterController>();

您可以在此处查看上下文:http://pastebin.com/U09aH4ZA。如果我将上面的代码添加到一个函数中,它可以工作,但不能在 class... 返回给我以下错误:

UnityEngine.Component.GetComponent (string) is a method but is used as a type EnemyController.characterController is a field but is used as a type

第二个问题与C#中的数组有关。更准确地说,对于数组的数组,UnityScript 是这样的:

var connected : Array = Array ();
static var waypoints : Array = Array ();
var objects : Object [] = FindObjectsOfType ( AutoWayPoint );
waypoints = Array ( objects );

我不知道怎么翻译这种东西,你可以在这里看到整个文件:http://perche.jeremy.free.fr/sup_scr/AutoWayPoint.js

最后,我想知道 IEnumerator 和 IEnumerable 之间的区别。

您的第一个错误似乎是因为您在任何方法之外调用 GetComponent<CharacterController>(),请尝试在 Start() 方法上执行此操作。


您可以将 js 数组翻译成一个简单的 c# 数组(比如 int []arrayOfInts = new int[20];) 或者如果您不确定数组将包含的元素数量,请使用类似 ArrayList 的内容。现在,您必须确定将使用哪种元素。
您的最后一个问题已经在这里得到解答:What is the difference between IEnumerator and IEnumerable?