Unity给出“类型或名称空间定义,或预期的文件结尾”错误

在这里遇到两个错误,但是我很确定它们是相互依赖的:

  

资产\课程库\ Scripts \ PlayerController.cs(9,16):错误CS1513:预期}

     

资产\课程库\脚本\ PlayerController.cs(42,1):错误CS1022:类型或名称空间定义,或预期的文件结尾

这对我来说真的没有任何意义。我确定我格式化正确,并且语法正确。每当我对错误所在的代码行进行任何更改时,它只会向我抛出更多错误。

我认为代码中可能只有一个错误导致复合反应,但是我找不到任何错误。

请问有更多关于Unity的知识的人可以向我解释我做错了什么吗?

代码:

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

public class PlayerController : MonoBehaviour
{

    void Start()
    {
        public float tank = GameObject.Find("tank").transform.localPosition.x;
    }

    public float horizontalInput;
    public float speed = 5;
    public float xRange = 20;
    public float zRange = 30;
    public float zRange2 = -8;
    public float turnSpeed = 20;
    public float forwardInput;

    void Update()
    {
        if (transform.position.x < -xRange){
            transform.position = new Vector3(-xRange,transform.position.y,transform.position.z);
        }
        if (transform.position.x > xRange){
            transform.position = new Vector3(xRange,transform.position.z);
        }
        if (transform.position.z < zRange2){
            transform.position = new Vector3(transform.position.x,zRange2);
        }
        if (transform.position.z > zRange){
            transform.position = new Vector3(transform.position.x,zRange);
        }

        horizontalInput = Input.Getaxis("Horizontal");
        forwardInput = Input.Getaxis("Vertical");

        transform.Translate(Vector3.forward * Time.deltaTime * speed * forwardInput);
        transform.Rotate(Vector3.up,turnSpeed * horizontalInput * Time.deltaTime);
    }
}
zzbzzb3732 回答:Unity给出“类型或名称空间定义,或预期的文件结尾”错误

通常:编译器以抛出此类异常的方式被破坏的可能性很小;)


Start中,您要做

public float tank = GameObject.Find("tank").transform.localPosition.x;

您无法在public方法(或确切地说,通常是任何方法)内定义Start字段。

因此,在public关键字之前,编译器期望}关闭Start方法。剩下的只是由第一个错误引起的跟进错误。

编译器将尝试继续并假设}位于期望的位置,因此您的类PlayerController已被}之后的下一个public float tank ...关闭因此,在点击public float horizontalInput时会出现下一个错误,因为它周围需要class / struct。所以你一个

  

类型或名称空间定义,或预期的文件结尾


您可能更想要

public float tank;

private void Start()
{
    tank = GameObject.Find("tank").transform.localPosition.x;
}
本文链接:https://www.f2er.com/3117074.html

大家都在问