Also habe ich es endlich geschafft, mit XNA herumzuspielen und ein 2D-Spiel zu erstellen (ich habe einige Kunstobjekte von einem Freund, der es für iOS entwickelt hat).
Viele Dinge scheinen einfach zu erledigen zu sein und kommen aus dem Kasten, aber ich bin verblüfft, weil die meiste Literatur (zum Beispiel die Bücher, die ich gekauft habe) 2D nicht allzu viel Aufmerksamkeit schenkt.
Ich würde mich über jede Klarstellung oder jeden Hinweis auf weitere Informationen zu den folgenden Fragen sehr freuen:
Was ist der Sinn eines Game Service? Ich verstehe die ganze Redewendung, ein Objekt als Dienst zu registrieren, damit es von jeder anderen GameComponent abgerufen werden kann. Wie schlägt sich das jedoch einfach nieder, wenn es möglicherweise öffentlich oder statisch ist? In meinem Buch wurde beispielsweise empfohlen, das SpriteBatch-Objekt in der Game.cs-Klasse zu registrieren. Ich bin mir nicht sicher, wie das vorzuziehen ist, es einfach öffentlich / statisch zu machen, da es sowieso nur eine Instanz von Game geben sollte (Singleton)?
Ich bin verwirrt, wann ich von GameComponent oder RenderableGameComponent erben soll. Ich versuche, einem Manager- / Controller-Design zu folgen, sodass alle Entitäten von einem einzigen Manager erstellt werden und für andere Dinge die gleichen. Ich habe derzeit jeden Manager / Controller von GameComponent geerbt. Wie schlägt es sich jedoch, wenn das Game-Objekt alle Manager besitzt und die Aktualisierung manuell aufruft und zeichnet?
Mir ist aufgefallen, dass Initialize vor ContentLoad () aufgerufen wird. Ich fand das ärgerlich, da ich in Initialize einige meiner Entitäten (z. B. Sprite, Player usw.) erstellen möchte, aber ich kann sie nicht mit ihren geladenen Entitäten versehen SpriteSheets oder Textures sind seit dem Aufruf zum Laden noch nicht aufgetreten. Initialisiere ich möglicherweise falsch oder weisen die Benutzer die Textur nur weiter unten in ContentLoad zu?
Das scheint mein größter " WTF " zu sein, der nicht wirklich versteht