Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

1

09.06.2012, 18:52

C# / XNA: Content kann nicht geladen werden

Hallo Community,

ich habe versucht mich in XNA einzuarbeiten und habe ein Projekt nach Anleitung von dieser Seite ( http://www.riemers.net/eng/Tutorials/XNA…reen_images.php) erstellt.

Allerdings tritt beim Ausführen immer der Fehler auf "Fehler beim Laden von "background". GrapicsDevice-Komponente nicht gefunden.
Woran könnte das liegen?

Danke schon mal für die Hilfe!

Hier mal der gesamte Quellcode:

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace Test1
{
/// <summary>
/// Dies ist der Haupttyp für Ihr Spiel
/// </summary>

public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
int screenWidth;
int screenHeight;
Texture2D backgroundTexture;

public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
backgroundTexture = Content.Load<Texture2D>("background");
}

/// <summary>
/// Ermöglicht dem Spiel die Durchführung einer Initialisierung, die es benötigt, bevor es ausgeführt werden kann.
/// Dort kann es erforderliche Dienste abfragen und nicht mit der Grafik
/// verbundenen Content laden. Bei Aufruf von base.Initialize werden alle Komponenten aufgezählt
/// sowie initialisiert.
/// </summary>

protected override void Initialize()
{
// TODO: Fügen Sie Ihre Initialisierungslogik hier hinzu

base.Initialize();
}

/// <summary>
/// LoadContent wird einmal pro Spiel aufgerufen und ist der Platz, wo
/// Ihr gesamter Content geladen wird.
/// </summary>

protected override void LoadContent()
{
// Erstellen Sie einen neuen SpriteBatch, der zum Zeichnen von Texturen verwendet werden kann.
spriteBatch = new SpriteBatch(GraphicsDevice);

//this.LoadContent();
// TODO: Verwenden Sie this.Content, um Ihren Spiel-Content hier zu laden

}

/// <summary>
/// UnloadContent wird einmal pro Spiel aufgerufen und ist der Ort, wo
/// Ihr gesamter Content entladen wird.
/// </summary>

protected override void UnloadContent()
{
// TODO: Entladen Sie jeglichen Nicht-ContentManager-Content hier
}

/// <summary>
/// Ermöglicht dem Spiel die Ausführung der Logik, wie zum Beispiel Aktualisierung der Welt,
/// Überprüfung auf Kollisionen, Erfassung von Eingaben und Abspielen von Ton.
/// </summary>
/// <param name="gameTime">Bietet einen Schnappschuss der Timing-Werte.</param>

protected override void Update(GameTime gameTime)
{
// Ermöglicht ein Beenden des Spiels
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();

// TODO: Fügen Sie Ihre Aktualisierungslogik hier hinzu

base.Update(gameTime);
}

/// <summary>
/// Dies wird aufgerufen, wenn das Spiel selbst zeichnen soll.
/// </summary>
/// <param name="gameTime">Bietet einen Schnappschuss der Timing-Werte.</param>

protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);

// TODO: Fügen Sie Ihren Zeichnungscode hier hinzu
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);

spriteBatch.Begin();
DrawScenery();
spriteBatch.End();

base.Draw(gameTime);
}

private void DrawScenery()
{
Rectangle screenRectangle = new Rectangle(0, 0, screenWidth, screenHeight);
spriteBatch.Draw(backgroundTexture, screenRectangle, Color.White);
}

}
}
»MitgliedXYZ« hat folgende Bilder angehängt:
  • Fehler1.jpg
  • Fehler2.jpg

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »MitgliedXYZ« (10.06.2012, 11:50)


2

10.06.2012, 03:08

Das hast du aber schön formatiert.

MfG
Check

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

3

10.06.2012, 09:40

Wenn du den Code unbedingt bunt haben willst, kann ich ihn auch direkt aus VS importieren... Dann gehen aber komischerweise die Zeilenumbrüche verloren...

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;using System.Collections.Generic;using System.Linq;using Microsoft.Xna.Framework;using Microsoft.Xna.Framework.Audio;using Microsoft.Xna.Framework.Content;using Microsoft.Xna.Framework.GamerServices;using Microsoft.Xna.Framework.Graphics;using Microsoft.Xna.Framework.Input;using Microsoft.Xna.Framework.Media;
namespace Test1{    /// <summary>    /// Dies ist der Haupttyp für Ihr Spiel    /// </summary>    public class Game1 : Microsoft.Xna.Framework.Game    {        GraphicsDeviceManager graphics;        SpriteBatch spriteBatch;        int screenWidth;        int screenHeight;        Texture2D backgroundTexture;
        public Game1()        {            graphics = new GraphicsDeviceManager(this);            //Content.RootDirectory = "Content";            backgroundTexture = Content.Load<Texture2D>("background");        }
        /// <summary>        /// Ermöglicht dem Spiel die Durchführung einer Initialisierung, die es benötigt, bevor es ausgeführt werden kann.        /// Dort kann es erforderliche Dienste abfragen und nicht mit der Grafik        /// verbundenen Content laden.  Bei Aufruf von base.Initialize werden alle Komponenten aufgezählt        /// sowie initialisiert.        /// </summary>        protected override void Initialize()        {            // TODO: Fügen Sie Ihre Initialisierungslogik hier hinzu
            base.Initialize();        }
        /// <summary>        /// LoadContent wird einmal pro Spiel aufgerufen und ist der Platz, wo        /// Ihr gesamter Content geladen wird.        /// </summary>        protected override void LoadContent()        {            // Erstellen Sie einen neuen SpriteBatch, der zum Zeichnen von Texturen verwendet werden kann.            spriteBatch = new SpriteBatch(GraphicsDevice);
            //this.LoadContent();            // TODO: Verwenden Sie this.Content, um Ihren Spiel-Content hier zu laden        }
        /// <summary>        /// UnloadContent wird einmal pro Spiel aufgerufen und ist der Ort, wo        /// Ihr gesamter Content entladen wird.        /// </summary>        protected override void UnloadContent()        {            // TODO: Entladen Sie jeglichen Nicht-ContentManager-Content hier        }
        /// <summary>        /// Ermöglicht dem Spiel die Ausführung der Logik, wie zum Beispiel Aktualisierung der Welt,        /// Überprüfung auf Kollisionen, Erfassung von Eingaben und Abspielen von Ton.        /// </summary>        /// <param name="gameTime">Bietet einen Schnappschuss der Timing-Werte.</param>        protected override void Update(GameTime gameTime)        {            // Ermöglicht ein Beenden des Spiels            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)                this.Exit();
            // TODO: Fügen Sie Ihre Aktualisierungslogik hier hinzu
            base.Update(gameTime);        }
        /// <summary>        /// Dies wird aufgerufen, wenn das Spiel selbst zeichnen soll.        /// </summary>        /// <param name="gameTime">Bietet einen Schnappschuss der Timing-Werte.</param>        protected override void Draw(GameTime gameTime)        {            GraphicsDevice.Clear(Color.CornflowerBlue);
            // TODO: Fügen Sie Ihren Zeichnungscode hier hinzu            graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
            spriteBatch.Begin();            DrawScenery();            spriteBatch.End();
            base.Draw(gameTime);        }
        private void DrawScenery()        {             Rectangle screenRectangle = new Rectangle(0, 0, screenWidth, screenHeight);             spriteBatch.Draw(backgroundTexture, screenRectangle, Color.White);        }
    }}



Ich glaube nicht, dass dies hilfreicher ist...
Aber wenn es der Lösung beiträgt, färbe ich halt den oberen Quellcode "von Hand" noch mal ein.

Edit: Hat den niemand eine Idee?

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »MitgliedXYZ« (10.06.2012, 12:24)


4

10.06.2012, 12:04

Ich hab die Idee bei Fehlern das Ganze auf pastebin zu verschieben.

MfG
Check

Union_Freedom

Treue Seele

Beiträge: 156

Wohnort: Nähe Hannover

Beruf: Student

  • Private Nachricht senden

5

10.06.2012, 12:08

Du darfst Content nicht im Konstruktor laden. Dafür gibt es extra die LoadContent-Methode.

MfG
Union_Freedom
Coder bei: http://crushing-gods.de/ (Folgt uns)
Erste Eindrücke zu Crushing Gods Link

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

6

10.06.2012, 12:27

Ich hab die Idee bei Fehlern das Ganze auf pastebin zu verschieben.

MfG
Check
Habs gerade getestet. Hilft leider auch nichts. Ist aber irgendwie auch nicht mein Hauptproblem...
Du darfst Content nicht im Konstruktor laden. Dafür gibt es extra die LoadContent-Methode.

MfG
Union_Freedom
Hab diese Zeile

C#-Quelltext

1
            backgroundTexture = Content.Load<Texture2D>("background");


Jetzt hier hin verschoben


protected override void LoadContent()
{
// Erstellen Sie einen neuen SpriteBatch, der zum Zeichnen von Texturen verwendet werden kann.
spriteBatch = new SpriteBatch(GraphicsDevice);
backgroundTexture = Content.Load<Texture2D>("background");
//this.LoadContent();
// TODO: Verwenden Sie this.Content, um Ihren Spiel-Content hier zu laden
}

Es tritt aber der gleiche Fehler auf...

Danke trotzdem.
Hat wer evtl. noch eine Idee?

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

7

10.06.2012, 12:43

so habe das Problem gefunden.

Ich habe ein neues Projekt gestartet und noch einmal alles nach Anleitung nachgemacht. Und siehe da, es klappt. Wahrscheinlich hat das Herumschieben der Bilddaten im Projektordner den Fehler ausgelöst...

Ich habe aber ein neues Problem:
Der folgende code stammt aus der Anleitung (http://www.riemers.net/eng/Tutorials/XNA…reen_images.php)
allerdings sagt Visual Studio der Name "device" ist im aktuellen Kontext nicht vorhanden.

C#-Quelltext

1
            screenWidth = device.PresentationParameters.BackBufferWidth;            screenHeight = device.PresentationParameters.BackBufferHeight;



Hat wer eine Idee?

FSA

Community-Fossil

  • Private Nachricht senden

8

10.06.2012, 13:00

Du musst auch erstmal ein device erstellen.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

9

10.06.2012, 14:33

Ich würde dir empfehlen, dass Tutorial noch einmel zu lesen. Ist ja nicht sehr viel. Er erklärt genau was es mit der device auf sich hat und warum er sie benutzt usw.

Zitat

Das programm, dass ich eben geschrieben hab ließ sich ohne einen einzigen Fehler kompilieren und und funktioniert so wie es soll. Das macht mir Angst, da ist was Faul

10

10.06.2012, 15:33

Das steht jetzt nicht zur Diskussion, klar, aber ich unterstelle dir, dass du es falsch benutzt hast. :dead:

MfG
Check

Werbeanzeige