Unity Engine Vector3错误

时间:2017-01-16 21:07:52

标签: c#

我已经完成了我的代码,但我正在尝试各种方法来修复错误

  

Vector3是'type',但用作'variable'

发生错误的代码行

    private void Update()
    {
        bool keyDown = Input.GetKeyDown(KeyCode.Keypad0);
        if (keyDown)
        {
            Client[] array = UnityEngine.Object.FindObjectsOfType<Client>();
            for (int i = 0; i < array.Length; i++)
            {
                Client client = array[i];
                client.send_createent(Vector3,Vector3,Vector3,Vector3, 10);

            }
        }

(产生实体assembly-csharp.dll代码的代码。我是编程的新手,所以如果我也说“noob”请理解)

1 个答案:

答案 0 :(得分:2)

看起来问题正是错误消息告诉您的 - 您正在尝试将类型用作变量。你了解一个类和一个对象之间的区别吗?类型是一个类,变量是一个对象。因此,变量是类型的实例。

以这种方式思考:类型就像你想要创建的东西的蓝图。它列出了预期的房屋/物体/等的结构,但它并不一定要定义所有细节。更重要的是,蓝图实际上并没有给你一个可以居住的房子,只是一个应该是什么样的指南。变量是该房屋的特定实例。您可以定义蓝图中隐含的具体内容,而且,它会为您提供一个可以居住的真实房屋。

所以你需要做的就是更改代码以便你制作一些变量,这样Unity就可以实际使用一些具有相关信息的具体变量。所以它看起来有点像下面(虽然用于创建向量的数字会有所不同,具体取决于您的确切应用):

private void Update()
{
    bool keyDown = Input.GetKeyDown(KeyCode.Keypad0);
    if (keyDown)
    {
        Client[] array = UnityEngine.Object.FindObjectsOfType<Client>();
        Vector3 vector1 = new Vector3(1.0f, 1.0f, 1.0f);
        Vector3 vector2 = new Vector3(1.0f, 1.0f, 1.0f);
        Vector3 vector3 = new Vector3(1.0f, 1.0f, 1.0f);
        Vector3 vector4 = new Vector3(1.0f, 1.0f, 1.0f);
        for (int i = 0; i < array.Length; i++)
        {
            Client client = array[i];
            client.send_createent(vector1,vector2,vector3,vector4, 10);

        }
    }

这有帮助吗?

编辑:我想我应该提一下你应该看一下Unity's Vector class(如果仔细观察,你会发现它在顶部显示结构,但是出于当前的目的,请忽略它。和结构是不同形式的类型)。请注意,那里列出了一个构造函数。这个构造函数可以让你实例化&#39; Vector类中的Vector对象,将Unity的蓝图转换为引擎可以使用的真实矢量。上面列出的变量在创建对象之前没有任何意义(并且您无法访问它们),因为它们特定于该对象。