Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, tenho o seguinte código de um jogo no MonoGame que estou fazendo:
public override void LoadAnimations()
{
//Arquivo de sprites
this.SpriteSheet = Game.Content.Load<Texture2D>("yusukeSheet.png");
//Classe de animação
AnimationSheet anm = new AnimationSheet(Game);
anm.SptSheet = this.SpriteSheet;
//Marca os retângulos da animação
anm.AddRectangle(0, 3, 94, 135, 120);
anm.AddRectangle(97, 6, 96, 132, 100);
anm.AddRectangle(96, 1, 96, 137, 120);
//Adiciona essa animação para lista de animações do personagem com um nome específico
this.AddAnimation("parado", anm);
//Apaga a lista para ser reutilizada
anm.Rectangles.Clear();
//Continua o processo de adicionar retângulos para outra animação...
base.LoadAnimations();
}
Tenho uma dúvida na parte do método Clear().
Depois de adicionada a animação criada (anm) numa "Lista de animações" do personagem (this.AddAnimation("parado", anm), eu utilizo esse método para apagar todos os retângulos e assim poder ser reutilizada - não desejo ter que criar uma instância da classe para cada animação.
Contudo, isso afeta a animação que foi adicionada a "Lista de animações" do personagem.
Para mim não faz sentido, pois, ao ser adicionada na lista, se torna outra instância do objeto e não deveria ser afetada, não é isso?
Tentei até fazer assim:
this.AddAnimation("parado", anm);
//anm já tem o SpriteSheet e os retângulos
AnimationSheet anm2 = anm;
//Apaga todos os retângulos, deixa só o SpriteSheet
anm2.Rectangles.Clear();
Mesmo assim, se eu utilizar o método anm2.Rectangles.Clear(), todos os retângulos da animação anm e da que foi adicionada a lista somem também.
Por que isso acontece?
Carregando comentários...