【问题标题】:Translation UnityScript to C# : Array & GetComponent将 UnityScript 翻译成 C#:数组和 GetComponent
【发布时间】:2015-09-21 15:40:48
【问题描述】:

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

第一个问题与GetComponent 相关。我有一个文件EnnemyController.cs,其中包含很多用于获取/设置敌人的功能。但是在所有这个函数之前,我需要初始化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 之间的区别。

【问题讨论】:

    标签: c# unity3d unityscript


    【解决方案1】:

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


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

    【讨论】:

    • 是的 GetComponent() 在任何方法之外调用,因为我想在类中的任何位置访问此元素。所以如果我在 Start() 中调用它,我可以在任何地方访问这个元素吗?对于数组,问题更多地与array of array = multidimensional array 联系起来?
    • 如果您想访问任何应该在您的方法之外声明的元素,但如果您还想随时访问该元素,您应该在做任何事情之前获得参考,这里有 2 个选项; 1.- 在代码中将元素声明为 public 并将元素从 Hierarchy 拖放到 Inspector 中的脚本(即 youtube.com/watch?v=TnJhhz120js ),或 2.- 通过方法内的代码获取引用,在这种情况下,您可以在内部执行此操作使用 GetComponent 启动或唤醒。/// c# 上的 mult dim 数组的语法:msdn.microsoft.com/en-us/library/2yd9wwz4.aspx
    • 感谢您的回答,这对我帮助很大! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    相关资源
    最近更新 更多