Skip to content

Monogame del 5, [Content pipeline]

Förra gången laddade vi in bilder till våra texturer. Det sättet fungerar såklart alldeles utmärkt men det finns ett väldigt mycket bättre sätt. Med monogame så följder det med ett verktyg för att packa med vad vi kallar för assets. En såkallad assetsmanager som heter MGCB Editor. I ditt solutions fönster så hittar du hela ditt projekt samt en mapp som heter Content.
I den mappen finns det en fil som heter samma som ditt projekt och avslutas med Content. I mitt fall heter den MonogameTutorialContent.mgcb.



Det ska egentligen funka att dubbelklicka på den filen för att öppna editorn, men för mig funkar det inte alls utan jag måste högerklicka på filen och välja "open with". Väl där måste jag sedan välja mgcb-editor-wpf och sedan ok. och först då så får jag upp editorn som ser ut så här...



Här kan vi välja att lägga till alla sina assets som man kan komma att behöva i spelet eller programmet framöver. Man kan ladda in ljudfiler, bildfiler, fontbeskrivningsfiler, shader filer med mer. Vi komma idag bara ladda in samma bild som i förra avsnittet för att se hur det funkar. Det här blir mer en guide över själva editorn och inte så mycket kod.

Vi börjar med menyerna eftersom knapparna bara är genvägar till det som finns i menyn.
Vi börjar med File...
Det är inte mycket som används här. New och open förklarar sig själva men är bara intressant om du öppnar editorn utan projekt. Det bryr vi oss inte om. Import skulle kunna vara intressant om du har kommit över några gamla XNA assets från något gammalt projekt. annars kan vi skippa det också.

Vi hoppar vidare till Edit...
här har vi en meny som heter Add och under den finns några intressanta undermenyer

New Item... Här lägger man till font beskrivningar och shaders bland annat. Det kommer vi till när vi ska rita text och skriva shaders.

New Folder skapar en ny mapp i strukturen, det kan vara bra för att organisera sina assets lite bättre. En mapp för texturer, en för ljud, en för fonter och en för shaders till exempel.

Existing Item. Här kan vi lägga in befintliga filer från våran dator. Här letar vi upp och lägger in våran bild som vi har från förra avsnittet.

Det kommer upp en fråga om man vill kopiera filen till sitt projekt Jag brukar göra så, annars skapas bara en länk till filen. Men det kan sluta med att veta vart alla original filer ligger sparade. Kopierar man så hamnar alla filer som används med i projektet.

View innehåller bara lite inställningar för vad och i vilken ordning saker ska visas i editorn. Inget viktigt.

Build däremot måste göras efter varje gång man lagt till nya assets till projektet. annars kommer man inte hitta filerna när man väl försöker ladda in filerna i koden. Så tryck på Build -> Build.

Rebuild bygger bara om dom assets som har ändrat på sig. Ifall du gjort någon ändring i någon bild så kommer bara den filen att byggas om.

Clean kommer ta bort alla byggda filer och bygga om allt från början. Jag har aldrig behövt göra det så jag kan inte ge något bra exempel på när det skulle behövas göras.

Slutligen ar vi debug mode som verkar vara lite buggig eller experimentell. Den kraschar för mig och jag har aldrig fått ut nått vettigt av att bocka i den.

Skulle det vara något problem i bygget "som vi kommer märka när vi kommer till shaders" så kommer det stå i loggen när vi bygger. Det borde inte kunna bli några fel när vi bygger en bildfil bara. Men det kan vara bra att veta.

Nu ser iallafall min Editor ut så här.



Då kan vi stänga fönstret och hoppa in i konstruktorn. Där lägger vi till raden Content.RootDirectory = "Content";
Med det så talar vi om vart programmet ska hitta våra assets filer någonstans.
  1.  
  2.         public GameTutorialGame()
  3.         {
  4.             graphics = new GraphicsDeviceManager(this);
  5.             Content.RootDirectory = "Content";
  6.         }
  7.  


i initialize funktionen så tar vi bort den gamla koden för att ladda in filer
  1.  
  2.         protected override void Initialize()
  3.         {
  4.             spriteBatch = new SpriteBatch(GraphicsDevice);
  5.  
  6.            
  7.             base.Initialize();
  8.         }
  9.  


och nu hoppar vi in i LoadContent() funktionen skriver vi in

enBild = Content.Load("Assets\\Graphics\\bild");
  1.  
  2.         protected override void LoadContent()
  3.         {
  4.             enBild = Content.Load<Texture2D>("Assets\\Graphics\\bild");
  5.             base.LoadContent();
  6.         }
  7.  


Glöm int att man måste använda sig av dubbla backslashar eller skriva @ först innan strängen
(@"Assets\Graphics\bild")

Om allt är i sin ordning så borde programmet gå att köra. kontrollera sökvägarna ordentligt om du inte får det att funka.
Det är på det här viset vi kommer ladda in våra assets framöver.
Nästa gång ska vi utforska Spritebatchen lite mer. Det kommer bli ett lite roligare avsnitt än vad det här kanske var. på återseende.

Trackbacks

No Trackbacks

Comments

Display comments as Linear | Threaded

No comments

Add Comment

You can use [geshi lang=lang_name [,ln={y|n}]][/geshi] tags to embed source code snippets.
Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options