Unity在编译有效的C#类时遇到问题

Unity在编译有效的C#类时遇到问题,c#,unity3d,compiler-errors,C#,Unity3d,Compiler Errors,我现在正在做一个简单的游戏,Unity和它给了我一个奇怪的错误。我有一个名为Level的C#类,它有一个构造函数,它接受四个参数: using System; namespace World { public class Level { public Grid grid { get; private set; } public int starty { get; private set; } public int endy { g

我现在正在做一个简单的游戏,Unity和它给了我一个奇怪的错误。我有一个名为
Level
的C#类,它有一个构造函数,它接受四个参数:

using System;

namespace World
{
    public class Level
    {
        public Grid grid { get; private set; }
        public int starty { get; private set; }
        public int endy { get; private set; }

        public Level(int width, int height, int starty, int endy)
        {
            this.grid = new Grid(width, height);
            this.starty = starty;
            this.endy = endy;
        }
    }
}
还有一个名为
WorldGen
的类,它仍然没有什么意义:

using System;
using World;

namespace WorldGen
{
    public class WorldGen
    {
        public Level GenerateLevel(int width, int height, int starty, int endy)
        {
            Level level = new Level(width, height, starty, endy); // Line 47

            Grid grid = level.grid; // Line 49

            // ...

            return level;
        }
    }
}
这对我来说非常简单(在项目中还没有调用GenerateLevel)。在PowerShell中调用
csc
将编译目录中的所有文件,而不会出现任何错误或警告

但是在Unity窗口中,我得到的错误对我来说没有多大意义:

Assets/WorldGen/WorldGen.cs(47:65):错误CS1729:类型“Level” 不包含接受“4”参数的构造函数 Assets/WorldGen/WorldGen.cs(49:31):错误CS1061:类型“Level” 不包含“网格”的定义且没有扩展方法 可以找到“级别”类型的“网格”(是否缺少using指令 组件引用的名称?)

就像
WorldGen
可以访问类
Level
,但看不到它的任何公共方法

在我看来,Unity在我的代码上是错误的,但根据经验,这种情况很少发生。我只是不知道它想从我这里得到什么<代码>级别位于项目目录中。它的构造函数有4个参数,我正在传递它需要的类型,它有公共
grid
字段。让我吃惊的是,我知道当unity从图片中消失时,这段代码会自行编译


我不知道我遗漏了什么,我想知道是否有人能给我一个线索。

我想说你和Level有命名冲突。尝试显式指定命名空间:


World.Level级别=新的World.Level(宽度、高度、起点、终点)

听起来好像它正在解析到不同的
级别
类。。。顺便说一句,遵循.NET命名约定是个好主意-将属性名的前导字符大写。命名空间中的类WorldGen WorldGen也在找麻烦(tbh:)嗯,我认为在该命名空间中使用与核心类同名的命名空间很常见。。。另外,非常感谢乔恩·斯基特!在这个项目的其他地方肯定还有另一个类叫做level@JonSkeet在专门使用Unity3D时,许多开发人员都会镜像Unity的代码样式,即不大写属性名称的第一个字母。