/// <summary>Classe para animação de objetos do jogo.</summary>
public class AnimationScript : DrawableGameComponent { List<Actor> itens = new List<Actor>(); Na minha classe de personagem, edito essa lista: public class Ryu : Character { public Ryu(Game game) : base(game) { } protected override void LoadContent() { List<Actor> actors = new List<Actor>(); actors.Add(new Actor(new Sprite(Game.Content.Load<Texture2D>("ryu/wait1.png"), 150))); actors.Add(new Actor(new Sprite(Game.Content.Load<Texture2D>("ryu/wait2.png"), 150))); actors.Add(new Actor(new Sprite(Game.Content.Load<Texture2D>("ryu/wait3.png"), 150))); actors.Add(new Actor(new Sprite(Game.Content.Load<Texture2D>("ryu/wait4.png"), 150))); actors.Add(new Actor(new Sprite(Game.Content.Load<Texture2D>("ryu/wait5.png"), 150))); actors.Add(new Actor(new Sprite(Game.Content.Load<Texture2D>("ryu/wait6.png"), 150))); EditSkill("Wait", ref actors); actors.Add(new Actor(new Movement(5,0))); actors.Add(new Actor(new Sprite(Game.Content.Load<Texture2D>("ryu/walk1.png"), 150))); actors.Add(new Actor(new Sprite(Game.Content.Load<Texture2D>("ryu/walk2.png"), 150))); actors.Add(new Actor(new Sprite(Game.Content.Load<Texture2D>("ryu/walk3.png"), 150))); actors.Add(new Actor(new Sprite(Game.Content.Load<Texture2D>("ryu/walk4.png"), 150))); actors.Add(new Actor(new Sprite(Game.Content.Load<Texture2D>("ryu/walk5.png"), 150))); actors.Add(new Actor(new Sprite(Game.Content.Load<Texture2D>("ryu/walk6.png"), 150))); EditSkill("Forward", actors); }Quando é hora de desenhar o personagem, eu verifico se o item da lista é uma sprite, se for, será rendenrizado e adiciona o mesmo valor a uma variável chamada lastSpriteRendered (ela é inicializada como "null" no construtor). Ela irá ser desenhada quando o item for um movimento, sendo assim, irá repetir a última sprite.
public override void Draw(GameTime gameTime)
{ if (!checkList()) return; sb = (SpriteBatch)base.Game.Services.GetService(typeof(SpriteBatch)); if (itens[index].ActorType == ActorType.Sprite) { sb.Draw(itens[index].Sprite.Texture, position, Color.White); lastSpriteRendered = itens[index].Sprite.Texture; } else { sb.Draw(lastSpriteRendered, position, Color.White); } base.Draw(gameTime); }Eu verifiquei a variável no bloco if, e ela recebe o valor, mas quando é necessário entrar no bloco else, ela se encontra novamente nula. Não estou entendendo.