xna 4.0 - XNA game components -
i confused how pass values of variables 1 gamecomponent another. using xna 4.0.
i created 2 gamecomponents, drawstring , inputmanager. want read keyboard input of user , pass onto drawstring update position.
i cant add components on drawstring(drawablegamecomponent). can on class not on gamecomponent. can guys post examples here. beginners.
use gamecomponent
want have update
called on every frame, , use drawablegamecomponent
want have draw
called on every frame , loadcontent
called when appropriate (at start of program, whenever device lost, when user pressed ctrl-alt-del on windows).
for inputmanager
might want update
method, can keep user input updated, inputmanager
gamecomponent
. drawstring
doesn't sound needs be. both classes sound services. in constructor or initialize
method of game class, following:
components.add(minputmanager = new inputmanager(this)); services.addservice(typeof(inputmanager), minputmanager); services.addservice(typeof(drawstring), mdrawstring = new drawstring(this))
(drawstring
, other class want game services need reference game
object.)
(note gamecomponent
s not need services, , services not need need gamecomponent
s. update
and/or draw
called, must call components.add(...)
; separately, object retrievable service, must call services.addservice(...)
).
then, when use inputmanager
or drawstring
service in other game component (or class have passed reference game object), can this:
inputmanager input = (inputmanager)game.services.getservice(typeof(inputmanager));
personally, write extension method make more concise:
using xnagame = microsoft.xna.framework.game; ... public static t getservice<t>(this xnagame pxnagame) { return (t)pxnagame.services.getservice(typeof(t)); }
the line input service becomes:
inputmanager input = game.getservice<inputmanager>();
Comments
Post a Comment