Unity3d,C#:由于荒谬的错误而完全丢失

时间:2020-05-05 16:31:57

标签: c# unity3d

自从一个月以来,我有空的时候几乎不去学习教程和学习C#,即使我的技能仍然很差,我也越来越有信心。

现在,我挑战自己将2个基于网格的教程混合在一起,使其具有一个形状和另一个性能,而我真的很沮丧,因为我只是刚开始,已经陷入困境。我知道由于它们的逻辑,混合代码并不总是一件容易的事,但是我却遇到了错误...伙计们,我发誓我试图自己解决它。是的,我摘下了所有混音,只保留了所涉集团的错误,然后继续。

看一下: -Assets \ Scripts \ Grid.cs(28,37):错误CS0103:名称“ x”在当前上下文中不存在 -Assets \ Scripts \ Grid.cs(28,40):错误CS0103:名称“ z”在当前上下文中不存在 我有6次都用3行代码压缩了。。。它们看起来很荒谬! 请杀了我。

以下是屏幕截图,以防万一: grrr

这是代码:

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

public class Grid : MonoBehaviour
{
    public int gridX, gridZ;
    private int[,] gridArray;
    private float cellSize;

    void Start()
    {
        Grid grid = new Grid(gridX, gridZ, 1f);
    }

    public Grid(int gridX, int gridZ, float cellSize)
    {
        this.gridX = gridX;
        this.gridZ = gridZ;
        this.cellSize = cellSize;

        gridArray = new int[gridX, gridZ];

        for(int x = 0; x < gridArray.GetLength(0); x++) ;
        {
            for(int z = 0; z < gridArray.GetLength(1); z++) ;
            {
                Utils.CreateWorldText(gridArray[x, z].ToString(), null, GetWorldPosition(x, z) + new Vector3(cellSize, 0, cellSize) * .5f, 10, Color.white, TextAnchor.MiddleCenter);
                Debug.DrawLine(GetWorldPosition(x, z), GetWorldPosition(x, z + 1), Color.white, 3600f);
                Debug.DrawLine(GetWorldPosition(x, z), GetWorldPosition(x + 1, z), Color.white, 3600f);
            }
        }
        Debug.DrawLine(GetWorldPosition(0, gridZ), GetWorldPosition(gridX, gridZ), Color.white, 3600f);
        Debug.DrawLine(GetWorldPosition(gridX, 0), GetWorldPosition(gridX, gridZ), Color.white, 3600f);
    }

    private Vector3 GetWorldPosition(int x, int z)
    {
        return new Vector3(x, 0, z) * cellSize;
    }
}

public class Utils [...]

这个故事中最糟糕的是,我已经完成了该教程,并且第一次没有对该团体有任何疑问。试图粘贴它,问题仍然存在,已检查,已检查²等...没办法。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

脱掉;在for循环中

   for(int x = 0; x < gridArray.GetLength(0); x++) ;  <===
   for(int z = 0; z < gridArray.GetLength(1); z++) ;  <===

    for(int x = 0; x < gridArray.GetLength(0); x++) 
    {
        for(int z = 0; z < gridArray.GetLength(1); z++) 
        {
            Utils.CreateWorldText(gridArray[x, z].ToString(), null, GetWorldPosition(x, z) + new Vector3(cellSize, 0, cellSize) * .5f, 10, Color.white, TextAnchor.MiddleCenter);
            Debug.DrawLine(GetWorldPosition(x, z), GetWorldPosition(x, z + 1), Color.white, 3600f);
            Debug.DrawLine(GetWorldPosition(x, z), GetWorldPosition(x + 1, z), Color.white, 3600f);
        }
    }