我在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];
}
}
它看起来像你有一个额外的curley在你的启动函数,是乱七八糟与你的代码。
void Start()
{
if(points.lengh > 0)
{
current_target = 0;
}
time = speed * Time.deltaTime;
}
}
- 去掉尾巴
你有一些基本的错误。
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];
}
}
}
的 time
变量不存在
的 magnitude
属性是只读的(这意味着你不能设置任何幅度值)
该类 current_target
是Vector3,所以你需要设置它们的类型是Vector3的值。
对于Vector3变量来说,没有任何属性存在,它可以调用 length
看起来你的代码中少了一个括号或者写错了。