Więc w końcu zacząłem bawić się XNA i bawiłem się tworzeniem gry 2D (mam mnóstwo zasobów graficznych od znajomego, który opracował ją na iOS)
Wydaje się, że wiele rzeczy jest łatwych do zrobienia i wychodzi z pudełka, ale jestem zaskoczony wieloma rzeczami, ponieważ większość literatury (na przykład książki, które kupiłam) nie zwraca zbytniej uwagi na 2D.
Byłbym wdzięczny za wszelkie wyjaśnienia lub wskazanie na więcej informacji na temat następujących zadań:
Jaki jest sens usługi gier? Rozumiem cały idiom rejestrowania obiektu jako usługi, aby każdy inny GameComponent mógł go chwycić, ale jak to się bije po prostu czyniąc go publicznym lub statycznym? Na przykład moja książka zaleciła zarejestrowanie obiektu SpriteBatch w klasie Game.cs. Nie jestem pewien, jak to jest lepsze, niż upublicznienie / statyczne, ponieważ i tak powinna istnieć tylko jedna instancja gry (singleton)?
Nie jestem pewien, kiedy powinienem dziedziczyć po GameComponent lub RenderableGameComponent. Staram się postępować zgodnie z projektem menedżera / kontrolera, tak aby wszystkie podmioty były tworzone / posiadane przez jednego menedżera i tak samo w przypadku innych rzeczy. Obecnie każdy menedżer / kontroler dziedziczy po GameComponent, ale jak to się dzieje, że obiekt Game jest właścicielem wszystkich menedżerów i ręcznie wywołuje aktualizację na nich i rysuje?
Zauważyłem, że Initialize jest wywoływane przed ContentLoad (), uważałem to za irytujące, ponieważ w mojej Inicjalizacji jest miejsce, w którym chciałbym utworzyć niektóre z moich bytów (np. Sprite, Player itp.), Jednak nie mogę dać im ich załadowania Arkusze lub tekstury Sprite, ponieważ wywołanie ich załadowania jeszcze nie nastąpiło. Czy być może inicjuję niepoprawnie, czy może ludzie przypisują teksturę dalej w ContentLoad?
To wydaje się być moim największym „ WTF ” niezrozumienia