来自另一个类的C#/ Unity访问静态列表

时间:2017-11-30 02:49:01

标签: c# unity3d

我正在更改具有以下功能的CarController脚本

public void Move(float steering, float accel, float footbrake, float handbrake) {
    if (this.tag == "Player")
    {
        Server.commands.ElementAt(0); //Does not work, it does not find Server
    }
    //More code here

}

我的Server类中的命令列表为public static

public class Server : MonoBehaviour {

    public Text text;
    private IPAddress ip;
    public static List<String> commands = new List<String>();
    //More code here

}

如何访问CarController脚本上的命令List?

两个文件都在不同的目录中,我无法将它们移动到同一目录。它们也位于不同的命名空间。

3 个答案:

答案 0 :(得分:0)

WhateverNamespaceTheServerClassIsIn.Server.commands

您放入脚本的目录对代码没有影响(编辑器和插件等特殊文件夹除外)。

答案 1 :(得分:0)

您可以通过添加命名空间来获取Server类,因为上面的答案建议像这样

using YourServerNameSpace;

或者您可以直接通过serverNameSpace获取Server类。

YourServerNameSpace. Server.commands

但是您的代码中的实际问题是, ElementAt 在List中不存在,因为建议的错误。

  Error 7 'System.Collections.Generic.List<string>' does not contain a 
    definition for 'ElementAt' and no extension method 'ElementAt' accepting a 
first argument of type 'System.Collections.Generic.List<string>' could be found (are you missing a using directive or an assembly reference?)

因此,要解决此错误,您必须添加

using System.Linq;

答案 2 :(得分:0)

我通过将所有文件放在另一个目录中来修复它。