Monogame Sprite Sheet — [hot]
_texture = texture; _regions = new Dictionary<string, Rectangle>(); int columns = texture.Width / frameWidth; int rows = texture.Height / frameHeight; // Auto-generate named regions: "0_0", "0_1", etc. for (int y = 0; y < rows; y++) for (int x = 0; x < columns; x++) string name = $"x_y"; Rectangle region = new Rectangle( x * frameWidth, y * frameHeight, frameWidth, frameHeight); _regions[name] = region;
var texture = content.Load<Texture2D>("player_sheet"); // 128x128 (4 frames of 32x32) _sheet = new SpriteSheet(texture, 32, 32); // Define animations _sheet.AddRegion("idle1", new Rectangle(0, 0, 32, 32)); _sheet.AddRegion("idle2", new Rectangle(32, 0, 32, 32)); _sheet.AddRegion("walk1", new Rectangle(64, 0, 32, 32)); _sheet.AddRegion("walk2", new Rectangle(96, 0, 32, 32)); _animator = new AnimatedSprite(_sheet); _animator.AddClip("idle", new[] "idle1", "idle2" , 4f); _animator.AddClip("walk", new[] "walk1", "walk2" , 8f); _animator.Play("idle"); monogame sprite sheet
Option A: Simple manual load