Podstawy XNA - Zarządzanie zasobami
Autor: Tadeusz Makuch
Opublikowano: 2012-03-22
W trakcie tworzenia aplikacji jednym z pierwszych kroków, jakie musimy wykonać jest dodanie zasobów, czyli m.in. tekstur czy plików dźwiękowych. Z tego samouczka dowiesz się, jak dodać je do projektu. Poznasz także prosty sposób ich użycia.
Przed wykonaniem zadań powinieneś:
- znać podstawy języka C#,
- wiedzieć, jak utworzyć nowy projekt XNA.
Po wykonaniu zadań nauczysz się:
- dodawać zasoby do projektu,
- umieszczać zasoby w aplikacji.
Implementacja
Twoim zadaniem będzie utworzenie prostej aplikacji, która wyświetli obraz na ekranie oraz odtworzy muzykę w tle. Wynik zadań został przedstawiony na Rys. 1.
Rys. 1. Wynik dodania i wyświetlenia zasobów w aplikacji XNA.
W celu wyświetlenia obrazu na ekranie i odtworzenia muzyki w tle musimy wykonać następujące kroki:
- dodać plik graficzny i dźwiękowy do projektu Content,
- dodać dwa pola do klasy, w której będziemy je wykorzystywali,
- załadować kontent w metodzie LoadContent(), a wynik przypisać do zdefiniowanych pól,
- odtworzyć muzykę w metodzie LoadContent(),
- wyświetlić obrazek w metodzie Draw().
Przygotuj zasoby
Przygotuj pliki zawierające obraz i dźwięk, które chciałbyś dodać do projektu. Nasza aplikacja będzie wyświetlana w oknie o szerokości 800 pikseli i wysokości 480 pikseli. Obraz o innej rozdzielczości zostanie rozciągnięty do wymiarów tego okna. Jeśli nie masz własnych zasobów, możesz skorzystać z przykładowych obrazów i muzyki, znajdujących się odpowiednio w folderach: "C:\Użytkownicy\Publiczny\Obrazy publiczne\Przykładowe Obrazy" i "C:\Użytkownicy\Publiczny\Muzyka publiczna\Przykładowa Muzyka". Na potrzeby tego artykułu, nazwij te pliki odpowiednio "obraz" i "muzyka", nie zmieniając ich rozszerzeń.
Informacja |
Wybierając pliki do pracy z XNA, pamiętaj o dozwolonych rozszerzeniach dla muzyki (.xap, .wav, .wma, .mp3) i obrazu (.bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, .tga.). |
Dodawanie zasobów do aplikacji
Pierwszym krokiem jest dodanie zasobów do aplikacji w odpowiednim projekcie.
- Stwórz nowy projekt i nazwij go "XNAZasoby". W tym celu:
- uruchom Visual Studio,
- wybierz File -> New -> Project,
- z kategorii XNA Game Studio 4.0 wybierz projekt Windows Game (4.0),
- w polu Name wpisz XNAZasoby (Rys. 2.).
Rys. 2. Dodawanie nowego projektu XNA.
- Dodaj do projektu pliki zawierające obraz i muzykę:
- w oknie Solution Explorer naciśnij prawym przyciskiem myszy na "XNAZasobyContent (Content)" (Rys. 3.),
- wybierz Add -> Existing Item,
- wybierz pliki i naciśnij przycisk Add.
Rys. 3. Widok okna Solution Explorer z projektem w XNA.
Informacja |
Jak można zobaczyć na Rys. 2., po utworzeniu aplikacji powstały dwa projekty - "XNAZasoby" oraz "XNAZasobyContent (Content)". Zasoby zawsze dodajemy do drugiego projektu. Możemy to uczynić na dwa sposoby:
|
Załaduj zasoby do aplikacji
Po dodaniu zasobów musimy je pobrać do aplikacji i przechować je za pomocą odpowiednich obiektów w klasie, w której chcemy je wykorzystać.
- Dodaj dwa nowe pola do klasy Game1. Będą one przechowywały nasze zasoby w uruchomionej aplikacji:
- otwórz plik Game1.cs.
- w klasie Game1 poniżej linii SpriteBatch spriteBatch; dodaj:
//Tło - obraz oraz muzyka
Texture2D backgroundImage;
Song backgroundMusic;
- Pobierz zasoby do odpowiednich obiektów w celu ich późniejszego używania:
- przejdź do metody LoadContent() i wpisz, po linijce // TODO, następujący kod:
// Ładowanie zasobów do pamięci
backgroundImage = Content.Load<Texture2D>("obraz");
backgroundMusic = Content.Load<Song>("muzyka");
Informacja |
W przypadku, gdy będziesz musiał, na jakimś etapie swoich przyszłych aplikacji, użyć ponownie metody Content.Load<>() w celu załadowania wcześniej używanego zasobu , otrzymasz referencje do już istniejącego elementu w pamięci . XNA ułatwia także kwestię czyszczenie pamięci z prostych zasobów, korzystając z programowego zarządcy GarbageCollector. Funkcja UnloadContent() klasy Game1 służy do usuwania np. referencji zewnętrznych bibliotek, które nie są czyszczone przez GarbageCollector. Jeśli, z jakiegoś powodu, chcesz ręcznie czyścić pamięć, ważne jest, byś użył funkcji ContentManager.Unload(), a nie ContentManager.Dispose(). |
Odtwarzanie muzyki i wyświetlanie tła
Dodane zasoby są już gotowe do ich wyświetlenie/odtworzenia w aplikacji.
- Dodaj kod odtwarzania muzyki w pętli przy starcie aplikacji:
- przejdź do metody LoadContent() i wpisz po poprzednio dodanym kodzie:
// Odtwarzanie muzyki przy starcie aplikacji
MediaPlayer.Play(backgroundMusic);
// Zapętlanie muzyki
MediaPlayer.IsRepeating = true;
- Dodaj kod wyświetlenia tła w prostokącie będącym oknem naszej aplikacji:
- przejdź do metody Draw() i wpisz po linijce // TODO:
// Rozpoczynanie rysowania duszków w danej klatce
spriteBatch.Begin();
// Rysowanie tła
spriteBatch.Draw(backgroundImage, GraphicsDevice.Viewport.TitleSafeArea, Color.White);
// Zamykanie rysowania duszków w danej klatce
spriteBatch.End();
- Przetestuj działanie aplikacji:
- zapisz zmiany w pliku,
- wciśnij F5 lub wybierz Debug->Start Debugging,
- sprawdź, czy Twoja aplikacja wyświetliła dodany obrazek oraz odtworzyła muzykę w tle.
Podsumowanie
W tym artykule nauczyliśmy się dodawać zasoby do naszego projektu i ładować je do pamięci. Przy okazji dowiedzieliśmy się jak, w prosty sposób, narysować tło oraz odtworzyć w tle muzykę. W celu tworzenia bardziej skomplikowanych aplikacji warto zapoznać się z bardziej zaawansowanymi sposobami wyświetlania obrazów i odtwarzania dźwięków.
W kolejnym artykule nauczymy się, jak wyświetlić obraz w XNA.
Zadanie
W celu sprawdzenia swoich umiejętności, spróbuj dodać do projektu więcej plików graficznych w różnych rozdzielczościach i sprawdź, jak zostaną zeskalowane. Spróbuj wyświetlić jednocześnie więcej niż jeden plik graficzny oraz odtworzyć jednocześnie kilka utworów muzycznych. Dodaj pliki w różnych formatach akceptowanych przez XNA.