错误CS1022:类型或命名空间定义,或在unity中预期文件结束[关闭]

问题描述 投票:0回答:1

我在Unity中遇到了一个我无法理解的错误。

这是做什么(我认为)是移动一个平台到和从点。

我只是在这里放了一些文字,所以我可以实际发布这个......为什么堆栈溢出会这样做。

这是错误的地方。

Assets/Scripts/\Mover.cs(74,1): 错误 CS1022: Type or namespace definition, or end-of-file expected.

这是代码。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Mover : MonoBehaviour {

  public Vector3[] points;
  public int point_number = 0;
  private Vector3 current_target;

  public float tolerance;
  public float speed;
  public float delay_time;

  private float delay_start;

  public bool automatic;


    // Start is called before the first frame update
    void Start()
    {
         if(points.lengh > 0)
         {
           current_target = 0;
         }
         time = speed * Time.deltaTime;
       }
    }

    // Update is called once per frame
    void Update()
    {
        if(transform.position != current_target)
        {
           MovePlatform();
        }
        else
        {
            UpdateTarget();
        }
    }

    void  MovePlatform()
    {
      Vector3 heading = current_target - transform.position;
      transform.position += (heading / heading.magnitude) * speed * time.deltaTime;
       if(heading.magnitude = tolerance)
       {
        transform.position = current_target;
        delay_start = Time.time;
       }
    }
    void UpdateTarget()
    {
      if(automatic)
      {
          if(Time.time - delay_start > delay_time)
          {
           NextPlatform();
          }
       }
    }
    public void NextPlatform()
    {
        point_number ++;
        if(point_number >= points.Length)
        {
          point_number = 0;
        }
        current_target = points[point_number];
    }
}
c# unity3d
1个回答
1
投票

它看起来像你有一个额外的curley在你的启动函数,是乱七八糟与你的代码。

 void Start()
    {
         if(points.lengh > 0)
         {
            current_target = 0;
         }
         time = speed * Time.deltaTime;
       }
    }

- 去掉尾巴


0
投票

你有一些基本的错误。

  1. 你没有在命名空间中定义你的类。
  2. 你的方法从 Update() 到最后一个都是在你的类的范围之外定义的(你的类的大括号是在 Update().

我无法检查你所使用的类型是否在某处被定义。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace ConsoleApp
{
    public class Mover
    {

        public Vector3[] points;
        public int point_number = 0;
        private Vector3 current_target;

        public float tolerance;
        public float speed;
        public float delay_time;

        private float delay_start;

        public bool automatic;


        // Start is called before the first frame update
        void Start()
        {
            if (points.lengh > 0)
            {
                current_target = 0;
            }
            time = speed * Time.deltaTime;
        }


        // Update is called once per frame
        void Update()
        {
            if (transform.position != current_target)
            {
                MovePlatform();
            }
            else
            {
                UpdateTarget();
            }
        }

        void MovePlatform()
        {
            Vector3 heading = current_target - transform.position;
            transform.position += (heading / heading.magnitude) * speed * time.deltaTime;
            if (heading.magnitude = tolerance)
            {
                transform.position = current_target;
                delay_start = Time.time;
            }
        }
        void UpdateTarget()
        {
            if (automatic)
            {
                if (Time.time - delay_start > delay_time)
                {
                    NextPlatform();
                }
            }
        }
        public void NextPlatform()
        {
            point_number++;
            if (point_number >= points.Length)
            {
                point_number = 0;
            }
            current_target = points[point_number];
        }
    }
}

0
投票

time 变量不存在

magnitude 属性是只读的(这意味着你不能设置任何幅度值)

该类 current_target 是Vector3,所以你需要设置它们的类型是Vector3的值。

对于Vector3变量来说,没有任何属性存在,它可以调用 length

看起来你的代码中少了一个括号或者写错了。

© www.soinside.com 2019 - 2024. All rights reserved.