Hi, I’ve been poking around MonoGame over the summer, and recently came across the IGameComponent interface. I want to try implementing this, along with IUpdatable and IDrawable in my 2D game, but I have no idea how to pass in the SpriteBatch to the GameComponents like I’ve always done. Any ideas/workarounds/suggestions?
You can simply have a field that stores a reference to your SpriteBatch instance and can be set through your GameComponent constructor, or alternatively a get/set property.
Thanks for the quick reply. So sending it separately is really the only way to do it?
Definitely not, but its one solution, you can also create a static class that has all the devices that you can access anywhere in your entire application without creating a handle reference to any objects that needs to access devices…
public static class GlobalDevices
{
public static GraphicsDeviceManager _DeviceGraphics;
public static SpriteBatch _Device2D;
public static GraphicsDevice _Device3D;
public static BasicEffect _DeviceBasicFX;
public static ContentManger _DeviceContent;
// do initialization
// do disposing
}