将UnityScript转换为C#:Array& GetComponent

时间:2015-09-21 15:40:48

标签: c# unity3d unityscript

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

第一个问题与GetComponent相关联。我有一个文件EnnemyController.cs,其中包含许多get / set enemies函数。但在完成所有这些功能之前,我需要初始化characterController

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

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

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之间的区别。

1 个答案:

答案 0 :(得分:2)

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

<小时/> 你可以在一个简单的c#数组中翻译你的js Arrays(比如 如果您不确定数组将具有的元素数量,请int []arrayOfInts = new int[20];)使用类似ArrayList的内容。现在,您必须确定将使用哪种元素。 您的上一个问题已在此处得到解答:What is the difference between IEnumerator and IEnumerable?