C#CS8025解析错误

C#CS8025解析错误,c#,unity3d,C#,Unity3d,我想知道是否有人能帮我找出以下脚本中的错误。以下是错误: Assets/Scripts/PlayerInput.cs(1,37):错误CS8025:解析错误 任何帮助都将不胜感激。代码如下 private class GridManager gridManager; public LayerMask Tiles; private GameObject activeTile; void Awake () { gridManager = GetComponent(); } void

我想知道是否有人能帮我找出以下脚本中的错误。以下是错误:

Assets/Scripts/PlayerInput.cs(1,37):错误CS8025:解析错误

任何帮助都将不胜感激。代码如下

private class GridManager gridManager;
public LayerMask Tiles;
private GameObject activeTile;

void Awake ()
{
    gridManager = GetComponent();
}
    void Update ()
{
    if (Input.GetKeyDown(KeyCode.Mouse0))
    {
        if (ActiveTile == null)
            SelectTile ();
        else
            AttemptMove ();
    }
}

void SelectTile ()
{
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit2D hit = GetRayIntersection(ray, 50f, Tiles);
    if (hit)
        activeTile = hit.collider.gameObject;
}

void AttemptMove ()
{
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit2D hit = GetRayIntersection(ray, 50f, Tiles);
    if (hit)
    {
        if (NeighborCheck (hit.collider.gameObject)
        {
                    activeTile.GetComponent().Move(hit.collider.gameObject.transform.position);
                hit.collider.gameObject.GetComponent().Move(activeTile.transform.position);
            gridManager.CheckMatches();
            }
            }
            }

            bool NeighborCheck (GameObject objectToCheck)
            {
                int xDifference = Mathf.Abs     (activeTile.transform.position.x - objectToCheck.transform.position.x);
                int yDifference = Mathf.Abs (activeTile.transform.position.y - objectToCheck.transform.position.y);

                if (xDifference + yDifference == 1)
                    return true;
                else
                    return false;
            }

            // Move script
            private GridManager gridManager;

            void Awake ()
            {
                gridManager = GetComponent();
            }

            public void Move (Vector2 destination)
            {
                transform.position = destination; // provisional
            }

当代码中有1个错误时,请停止并在继续之前修复它。您的代码中有10多个编译器错误。经过大量修改后,我能够编译代码。请认真对待

  • if(ActiveTile==null)
    更改为
    if(ActiveTile==null)

  • 更改
    GetRayIntersection(光线、50f、平铺)
    SelectTile()
    AttemptMove()
    函数到
    Physics2D.GetRayIntersection(光线,50f,平铺)

  • 更改
    gridManager=GetComponent()
    Awake()
    函数到
    gameObject.GetComponent()

  • Change
    Mathf.Abs(activeTile.transform.position.x-objectToCheck.transform.position.x)
    Mathf.Abs(activeTile.transform.position.y-objectToCheck.transform.position.y)

    Mathf.Abs((int)(activeTile.transform.position.x-objectToCheck.transform.position.x));
    Abs((int)(activeTile.transform.position.y-objectToCheck.transform.position.y))

  • 更改activeTile.GetComponent().Move(hit.collider.gameObject.transform.position)
    hit.collider.gameObject.GetComponent().Move(activeTile.transform.position)

    activeTile.GetComponent().Move(hit.collider.gameObject.transform.position)
    hit.collider.gameObject.GetComponent().Move(activeTile.transform.position)

  • 将“
    ”添加到
    if(neightrcheck(hit.collider.gameObject)
    所以你应该有
    if(neightrcheck(hit.collider.gameObject))

  • 私有类GridManager GridManager;
    更改为
    私有GridManager GridManager;

  • Awake()
    函数中的
    gridManager=GetComponent();
    更改为
    gridManager=GetComponent();

  • 最后,停止复制和粘贴,学习C#。

  • 您的整个代码应该如下所示

    public class PlayerInput : MonoBehaviour
    {
    
        private GridManager gridManager;
        public LayerMask Tiles;
        private GameObject activeTile;
    
        void Awake()
        {
            gridManager = GetComponent();
        }
        void Update()
        {
            if (Input.GetKeyDown(KeyCode.Mouse0))
            {
                if (activeTile == null)
                    SelectTile();
                else
                    AttemptMove();
            }
        }
    
        void SelectTile()
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit2D hit = Physics2D.GetRayIntersection(ray, 50f, Tiles);
            if (hit)
                activeTile = hit.collider.gameObject;
        }
    
        void AttemptMove()
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit2D hit = Physics2D.GetRayIntersection(ray, 50f, Tiles);
            if (hit)
            {
                if (NeighborCheck(hit.collider.gameObject))
                {
                    activeTile.GetComponent<CharacterController>().Move(hit.collider.gameObject.transform.position);
                    hit.collider.gameObject.GetComponent<CharacterController>().Move(activeTile.transform.position);
                    gridManager.CheckMatches();
                }
            }
        }
    
        bool NeighborCheck(GameObject objectToCheck)
        {
            int xDifference = Mathf.Abs((int)(activeTile.transform.position.x - objectToCheck.transform.position.x));
            int yDifference = Mathf.Abs((int)(activeTile.transform.position.y - objectToCheck.transform.position.y));
    
            if (xDifference + yDifference == 1)
                return true;
            else
                return false;
        }
    
    
        void Awake()
        {
            gameObject.GetComponent<GridManager>();
        }
    
        public void Move(Vector2 destination)
        {
            transform.position = destination; // provisional
        }
    }
    
    公共类PlayerInput:MonoBehavior
    {
    私人网格管理器网格管理器;
    公共层面砖;
    私有游戏对象动态瓷砖;
    无效唤醒()
    {
    gridManager=GetComponent();
    }
    无效更新()
    {
    if(Input.GetKeyDown(KeyCode.Mouse0))
    {
    如果(activeTile==null)
    选择tile();
    其他的
    尝试移动();
    }
    }
    void SelectTile()
    {
    Ray-Ray=Camera.main.screenpointoray(输入.鼠标位置);
    RaycastHit2D hit=Physics2D.GetRayIntersection(光线,50f,平铺);
    如果(命中)
    activeTile=hit.collider.gameObject;
    }
    void AttemptMove()
    {
    Ray-Ray=Camera.main.screenpointoray(输入.鼠标位置);
    RaycastHit2D hit=Physics2D.GetRayIntersection(光线,50f,平铺);
    如果(命中)
    {
    if(NeighborCheck(hit.collider.gameObject))
    {
    activeTile.GetComponent().Move(hit.collider.gameObject.transform.position);
    hit.collider.gameObject.GetComponent().Move(activeTile.transform.position);
    gridManager.CheckMatches();
    }
    }
    }
    布尔邻域检查(游戏对象对象检查)
    {
    intxdifference=Mathf.Abs((int)(activeTile.transform.position.x-objectToCheck.transform.position.x));
    int-yddifference=Mathf.Abs((int)(activeTile.transform.position.y-objectToCheck.transform.position.y));
    if(xDifference+yddifference==1)
    返回true;
    其他的
    返回false;
    }
    无效唤醒()
    {
    gameObject.GetComponent();
    }
    公共无效移动(矢量2目的地)
    {
    transform.position=destination;//临时
    }
    }
    
    这不是整个脚本,要修复解析错误,需要整个脚本,因为您很可能在某个地方丢失了一个大括号。这是一个非常常见的问题,我猜您在发布之前没有真正搜索,因为您已经得到了很多答案。如果这是整个脚本,那么您需要先学习Coz您缺少关于如何声明类的知识。代码片段的第一行是错误的。
    私有类GridManager GridManager;
    您不能“声明”类。另外,请格式化您的代码,不仅仅是为了我们,也是为了您自己。