【发布时间】:2014-02-16 16:18:58
【问题描述】:
我使用 XNA 作为我的游戏的框架。在我的Input 课程中,我使用 XNA 获取键盘状态并检测按键:
namespace MyGame.Classes
{
public class Input : IInput
{
public bool DetectKey( Keys key )
{
if ( Keyboard.GetState().IsKeyDown( key ) )
{
return true;
}
return false;
}
}
}
最近我一直在尝试集成 Newtonsoft.Json 来管理我的游戏的配置设置。在另一堂课中,我阅读了 JSON 文件:
{
"Settings": {
// ...
},
"Controls": {
"Keyboard": {
"W": "Up",
"A": "Left",
"S": "Down",
"D": "Right"
}
}
}
然后我将 JSON 转换为强类型对象:
namespace MyGame.Classes
{
public class Config
{
public Settings Settings = new Settings();
public Controls Controls = new Controls();
}
public class Controls
{
public Keyboard Keyboard = new Keyboard();
}
public class Keyboard
{
public string W = "Default";
public string A = "Default";
public string S = "Default";
public string D = "Default";
}
}
我遇到的问题是我想在我的 Input 类中同时使用 Keyboard 类(MyGame.Classes.Keyboard 和 Microsoft.Xna.Framework.Input.Keyboard),如下所示:
namespace MyGame.Classes
{
public class Input : IInput
{
public bool DetectUp( Config config )
{
// Convert string to enum
var key = GetKey( config.Controls.Keyboard.W );
return DetectKey( key );
}
}
}
显然编译器对此并不满意。我一直在寻找解决方案,但大多数提出此问题的人都可以控制所讨论的两个命名空间。我不确定如何根据我的情况调整这些解决方案:
- Namespace and Class Naming Best Practice in Atypical System
- Separate projects or multiple class files ... namespace best practice in C#
- Identical class names in different namespaces
我尝试将其添加到 Input 的顶部:
using Keyboard = Microsoft.Xna.Framework.Input.Keyboard;
using KeyboardConfig = MyGame.Classes.Keyboard;
这不起作用,因为编译器仍然尝试使用MyGame.Classes.Keyboard 来解析类中的每个Keyboard。
对我来说最好的方法是什么?
【问题讨论】:
标签: c# json class xna namespaces