Aktualizowany: 3 luty 2012r 18:38
Zacznijmy od ustawień ekranu.
do metody Initialize() dodajemy ten kod :
// TODO:
Add your initialization logic here
graphics.PreferredBackBufferWidth =
800; // określamy tutaj szerokość okna
graphics.PreferredBackBufferHeight
= 640; // określamy tutaj wysokość okna
graphics.IsFullScreen = false; // czy ma być tryb pełnoekranowy
graphics.ApplyChanges(); // Zatwierdzamy zmiany
Window.Title = "Block_Portal"; // Nazwa widoczna na pasku okna
// this.IsMouseVisible = true; // czy mysz systemowa ma być widoczna
Znaczenie poszczególnych poleceń opisałem obok w komentarzu, dzięki tym czynnością jeszcze przed załadowaniem zasobów i pierwszym obiegiem pętli naszej gry(metody Update() i Draw()) możemy ustalić wygląd naszego okna widoku.
Teraz po naciśnięciu klawisza F5 wyświetli się nam ustalone powyżej okienko o rozdzielczości 800x640 o nazwie na pasku tytułu aplikacji "Block_Portal". Ta wiedza o możliwościach w metodzie Initialize() powinna w zupełności wystarczyć na nasze pierwsze gry tworzone w tym freameworku.
następnie na początku klasy inicjujemy zmienną Texture2D mogącą przechowywać nasz obraz dodany do projektu:
Teraz po naciśnięciu klawisza F5 wyświetli się nam ustalone powyżej okienko o rozdzielczości 800x640 o nazwie na pasku tytułu aplikacji "Block_Portal". Ta wiedza o możliwościach w metodzie Initialize() powinna w zupełności wystarczyć na nasze pierwsze gry tworzone w tym freameworku.
następnie na początku klasy inicjujemy zmienną Texture2D mogącą przechowywać nasz obraz dodany do projektu:
Texture2D obraz;
Dalej żeby cokolwiek wyświetlić przydałoby się najpierw to załadować do zasobów naszej aplikacji. Można zrobić to na kilka sposobów:
a) w explorerze windows otwieramy folder zawierający naszą grafikę do wklejenia(formaty wspierane przez XNA to: bmp, jpg, png), następnie przeciągamy wybrany przez nas obrazek na pasek zadań i na kartę naszego projektu w MVC# a następnie na zakładkę "Nazwa naszej gry"Content w Solution Explorer i upuszczamy.
b) klikamy Shift+Alt+A i wybieramy interesujący nas plik a następnie klikamy button "Add".
c) klikamy na ikonę pod "Edit" na pasku programu albo w solution klikamy prawym na projekt Content
Teraz powinniśmy wczytać nasz dodany obrazek po przez wpisanie w metodzie:
obraz = Content.Load<Texture2D>("nasz_obraz");
Dzięki temu zmienna obraz przechowuje nasz obrazek który teraz będziemy mogli wyświetlić w metodzie
Tworzymy bufor grafiki w metodzie LoadContent():
spriteBatch = new SpriteBatch(GraphicsDevice);
sam bufor grafiki uruchamiamy w metodzie Draw():
spriteBatch.Begin();
teraz możemy wywołać polecenie rysowania naszego obrazka w kopiach i rozmiarach jakich chcemy(o tym nieco dalej), wpisując następujące polecenie:
ciąg tych instrukcji zamykamy poleceniem:
W następnym odcinku wyjaśnię jak wyświetlać teksty, oraz dodatkowe efekty przy wyświetlaniu. Pozdrawiam
Teraz powinniśmy wczytać nasz dodany obrazek po przez wpisanie w metodzie:
protected override void
LoadContent()
poniższej instrukcji:obraz = Content.Load<Texture2D>("nasz_obraz");
Uwaga: nazwa nasz_obraz to Asset name dodanego do projektu obrazka,
zazwyczaj jest taki sam jak nazwa wczytanego rpzez nas pliku ale bez
końcówki mówiącej o farmacie pliku. Czyli jeśli dodamy obrazek png: tło_mojej_gry.png to będziemy go wczytywać wpisując jego asset name: tło_mojej_gry(chyba że zmieniliśmy nazwę na inną wtedy używamy tej podanej przez nas)
Im mniejszy rozmiar obrazka tym lepiej, ponieważ nie dość że zajmuje mało miejsca i zmniejsza wagę naszej aplikacji to i karta graficzna ma mniej roboty do zrobienia gdy wyświetla się wiele kopi tego zdjęcia.
|
Dzięki temu zmienna obraz przechowuje nasz obrazek który teraz będziemy mogli wyświetlić w metodzie
protected override void Draw(GameTime gameTime)
nim jednak to uczynimy musimy powiadomić system o tym że będziemy rysować(moc obliczeniowa przechodzi na kartę graficzną). Najpierw tworzymy kwadrat w którym będziemy przetrzymywać nasz obrazek na ekranie:
Rectangle
screenRectangle = new Rectangle(0, 50, 200, 250);
W konstruktorze podajemy 4 parametry, kolejno:
pierwszy(u mnie o wartości 0) - położenie X kwadratu no i potem naszego obrazka
drugi(50) - położenie Y kwadratu
trzeci(200) - szerokość kwadratu
czwarty(250) - wysokość kwadratu
Możesz je dowolnie zmieniać, pamiętaj tylko że 2 pierwsze parametry określające położenie na płaszczyźnie będą rysowane w pamięci komputera nawet jeśli wyjdą poza obszar widziany przez ciebie czyli okno naszej aplikacji. Dlatego później nauczymy się optymalizować wyświetlanie obrazków do tych widocznych dla nas.
kolejne 2 parametry czyli trzeci i czwarty określający wysokość i szerokość obrazka również możemy dowolnie modyfikować. Samym procesem optymalizacji zajmuje się system który za nas skaluje obraz jeśli będziemy go wyświetlać.
|
Tworzymy bufor grafiki w metodzie LoadContent():
spriteBatch = new SpriteBatch(GraphicsDevice);
spriteBatch.Begin();
teraz możemy wywołać polecenie rysowania naszego obrazka w kopiach i rozmiarach jakich chcemy(o tym nieco dalej), wpisując następujące polecenie:
spriteBatch.Draw(obrazek,
screenRectangle, Color.White);
pierwszy parametr to zmienna naszego rysunku do wyświetlenia.
drugi parametr to nasz wcześniej utworzony rectangle(kwadrat) służący wskazania gdzie i jak duże ma to być co wyświetlamy.
trzeci parametr to kolor maski, biały oznacza że obrazek będzie w takim odcienia jakim jest rzeczywiście, inne kolory zabarwiając go na odpowiednią wartość. Możecie sobie popróbować wychodzące efekty zmieniając White na inną wartość np. Blue. Zastosowanie np. w flagach graczy, wystarczy ze wczytamy 1 białą flagę a możemy z niej porobić wiele innych kolorów flag itp. itd:)
|
spriteBatch.End();
Teraz kompilując i uruchamiając program naszym oczom ukaże się nasz obraz.Co do funkcji: spriteBatch polecam ją wykorzystywać tylko do rysowania, wykonywanie pomiędzy jej początkiem a końcem działań logicznych, artmetycznych może przebiegać wolniej |
W następnym odcinku wyjaśnię jak wyświetlać teksty, oraz dodatkowe efekty przy wyświetlaniu. Pozdrawiam