Unity在编译有效的C#类时遇到问题
我现在正在做一个简单的游戏,Unity和它给了我一个奇怪的错误。我有一个名为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
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的代码样式,即不大写属性名称的第一个字母。