The Xna-Way: Tutorial 9 (Trick): Ordine dei DrawableGameComponent/GameComponent

Vi siete mai trovati a dover aggiungere diversi GameComponent al vostro progetto?
Bè credo di si, dato che sono il componente fondamentale su cui si basa XNA.

E scommetto che molti si sono trovati nella situazione in cui un Component esegua il metodo Update prima di un altro, o che vengano eseguiti i metodi Draw in un ordine che non è quello desiderato... producendo in questo modo effetti del tutto errati.

Ma c'è un semplicisso modo per ovviare a tutto questo.
La classe GameComponent espongono due proprietà interessanti:
- UpdateOrder: indica in quale ordine i componenti devono eseguire il loro metodo Update (questo se sono attivi). L'ordine è relativo agli altri componenti presenti nella stessa collezione. Naturalmente i GameComponent con valori più bassi verrano aggiornati prima.
- DrawOrder: indica in quale ordine verrano eseguiti i metodi Draw dei vari componenti.

Queste due proprietà sono molto utili quando si lavora con componenti che si devono "passare" dai, o per i quali è necessario che lo stato (o la parte di stato) del gioco sui cui operano sia stata prima aggiornata da un altro componente.

Lo stesso dicasi per l'ordine del rendering della scena. Ciò torna molto utile nel caso si abbia più DrawableGameComponent i quali operano su SpriteBatch differenti per esempio. Così potremmo delegare ai vari componenti il render di una parte della vista, per poi comporre il tutto assieme con pochissimo sforzo.

Spero vi sia utile (a me lo è stato^^).
Per qualsiasi dubbio contattatemi pure.
A presto.

Odino

0 commenti:

Donazioni

My Menu'