現在、C#でゲームエンジンを設計しています。エンジンには複数のドライバタイプ(OpenGL、DirectX)があります。ただし、ユーザーがボタンを押したときには、それぞれのドライバタイプに異なるキーコードが必要です。しかし何らかの理由で、プリプロセッサを使用していません...私は非常にそれらを使用することを忘れないでください。C#Enumeration Issue
私は本当に(ほとんどの場合のように)誰かが私がしようとしていることを理解するための最良の方法は、いくつかのコードを表示することだと思います。ここで
は私のキーコード列挙(またはその一部)である:
#define DRIVER_TYPE_OPENGL
、私の一番上にある:私のOpenGL Windowクラスの上部に
public enum KeyCode
{
#if DRIVER_TYPE_OPENGL
A = 83,
B = 84
#elif DRIVER_TYPE_DRIECTX
A = 65,
B = 66
#endif
}
、私はこれを行っていますDirectX Windowクラス、私はこれをしました:
#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();
しかし、その代わりに、私はというエラーを取得する:「キーコード 『A』の定義が含まれていません」
を私が間違って何をしているのですか?
ありがとうございました!
スイッチケースを使用していない特別な理由は何ですか? –
@SouvikGhosh私は列挙体の中でswitch-caseを使うことができないので、 "OpenGLKeyCode"と "DirectXKeyCode"の両方の列挙を持つことはできません。 – tdkr80
@aaronはAの値を65にし、OpenGLとDirectXのキーコード値を切り替えることはできません。 – tdkr80