我有一个接口(ICamera),由2个类(FreeCamera,StaticCamera)实现.这些类继承自GameComponent.
示例定义:
public class FreeCamera : GameComponent, ICamera
{
...
}
Run Code Online (Sandbox Code Playgroud)
现在我将这些类添加到游戏组件中,并将其中一个组件注册到游戏服务中
private FreeCamera freeCam;
private StaticCamera staticCam;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
freeCam = new FreeCamera(this) { Enabled = true };
staticCam = new StaticCamera(this) { Enabled = false };
Services.AddService(typeof(ICamera, freeCam);
Components.Add(freeCam);
Components.Add(staticCam);
...
}
Run Code Online (Sandbox Code Playgroud)
然后我想借助切换功能在应用程序流程中更改服务的提供程序
namespace Game1
{
protected override void Update(GameTime gameTime)
{
var keyboard = Keyboard.GetState();
if(keyboard.IsKeyDown(Keys.C))
{
if(freeCam.Enabled)
{
Services.RemoveService(typeof(ICamera));
Services.AddService(typeof(ICamera, staticCam);
freeCam.Enabled = !freeCam.Enabled;
staticCam.Enabled = !staticCam.Enabled;
} …Run Code Online (Sandbox Code Playgroud)