C# 枚举问题
C# Enumeration Issue
我目前正在用 C# 设计游戏引擎。该引擎有多种驱动程序类型(OpenGL、DirectX)。但是,当用户按下按钮时,每种驱动程序类型都需要不同的键码。但出于某种原因,使用预处理器不起作用...请注意,我对使用它们还很陌生。
我真的认为(在大多数情况下)让别人理解我正在尝试做的事情的最好方法是展示一些代码。
这是我的 KeyCode 枚举(或其中的一部分):
public enum KeyCode
{
#if DRIVER_TYPE_OPENGL
A = 83,
B = 84
#elif DRIVER_TYPE_DRIECTX
A = 65,
B = 66
#endif
}
在我的 OpenGL Window class 的顶部,我这样做了:
#define DRIVER_TYPE_OPENGL
在我的 DirectX Window class 的顶部,我这样做了:
#define DRIVER_TYPE_DRIECTX
据我了解,我现在应该可以做这样的事情了:
IDisplay display = new OpenGLDisplay(WIDTH, HEIGHT, TITLE);
while (true)
{
// Do stuff with display
// Process input like so:
if (Keyboard.IsKeyDown(KeyCode.A))
{
Console.WriteLine("You're using OpenGL driver, good on you!")
}
// Swap buffers and stuff
}
display.Close();
但是,我收到一条错误消息:"KeyCode does not contain a definition for 'A'"
我做错了什么?
在此先感谢您的帮助!
移动您的枚举或使用 project-wide 定义。
定义将只在你#define
它的文件中起作用。
这是 C#,而不是带有 headers.
的 C++
我目前正在用 C# 设计游戏引擎。该引擎有多种驱动程序类型(OpenGL、DirectX)。但是,当用户按下按钮时,每种驱动程序类型都需要不同的键码。但出于某种原因,使用预处理器不起作用...请注意,我对使用它们还很陌生。
我真的认为(在大多数情况下)让别人理解我正在尝试做的事情的最好方法是展示一些代码。
这是我的 KeyCode 枚举(或其中的一部分):
public enum KeyCode
{
#if DRIVER_TYPE_OPENGL
A = 83,
B = 84
#elif DRIVER_TYPE_DRIECTX
A = 65,
B = 66
#endif
}
在我的 OpenGL Window class 的顶部,我这样做了:
#define DRIVER_TYPE_OPENGL
在我的 DirectX Window class 的顶部,我这样做了:
#define DRIVER_TYPE_DRIECTX
据我了解,我现在应该可以做这样的事情了:
IDisplay display = new OpenGLDisplay(WIDTH, HEIGHT, TITLE);
while (true)
{
// Do stuff with display
// Process input like so:
if (Keyboard.IsKeyDown(KeyCode.A))
{
Console.WriteLine("You're using OpenGL driver, good on you!")
}
// Swap buffers and stuff
}
display.Close();
但是,我收到一条错误消息:"KeyCode does not contain a definition for 'A'"
我做错了什么?
在此先感谢您的帮助!
移动您的枚举或使用 project-wide 定义。
定义将只在你#define
它的文件中起作用。
这是 C#,而不是带有 headers.