Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2011, 18:55   #1
Renat21
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 12
По умолчанию C# и XNA Game Studio 4.0 Загрузка спрайтов

Доброе время суток! Помогите мне пожалуйста разобраться с одним вопросом. С языком программирования C# я знаком давно, но вот с платформой Microsoft XNA 4.0 Game Studio 4.0 я знаком лишь 3 дня Я начал свое знакомство с книги "Разработка игр под Windows в XNA Game Studio Express" И у меня сразу же возник вопрос: почему при попытке загрузки спрайта файл не загружается?
Вот код класса Game1.cs:

namespace MyGame
{
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
//ContentManager content;
KeyboardState MyKeybordState;
//Vector2 spritePosition;
Sprite sprite;

public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content = new ContentManager(Services);
Content.RootDirectory = "Content";
Window.Title = "Моя первая игра";
graphics.PreferredBackBufferWidth = 1024;
graphics.PreferredBackBufferHeight = 768;
graphics.PreferMultiSampling = false;
graphics.ToggleFullScreen();
sprite = new Sprite();
}
protected override void Initialize()
{
sprite.spritePosition = new Vector2(Window.ClientBounds.Width / 2, Window.ClientBounds.Height / 2);
base.Initialize();
}
/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
protected override void LoadContent()
{
sprite.Load(Content, @"Textures\Main"); //Вот здесь файл Main.png должен загружаться
//но компилятор пишет либо File not found хотя
//я пробывал кидать папку content во все
//какие только можно папки проекта, либо
//компилятор выводит File not open
//Помогите пожалуйста разобраться
//У меня стоит Visual Studio 10 и
//Microsoft XNA Game Studio 4.0
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);

// TODO: use this.Content to load your game content here

}

/// <summary>
/// UnloadContent will be called once per game and is the place to unload
/// all content.
/// </summary>
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}

/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One). Buttons.Back == ButtonState.Pressed)
this.Exit();

// TODO: Add your update logic here
MyKeybordState = Keyboard.GetState();
if (MyKeybordState.IsKeyDown(Keys.Esca pe))
{
this.Exit();
}

base.Update(gameTime);
}

/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.Bisque);

// TODO: Add your drawing code here
spriteBatch.Begin(SpriteSortMode.Im mediate, BlendState.AlphaBlend);
sprite.DrawSprite(spriteBatch);
spriteBatch.End();
base.Draw(gameTime);
}
}
}
Код класса Sprite.cs:

namespace MyGame
{

public class Sprite
{
public Texture2D spriteTexture;
public Vector2 spritePosition;

public Sprite()
{

}

public void Load(ContentManager content, string stringTexture)
{
spriteTexture = content.Load<Texture2D>(stringTextu re);
}

public void DrawSprite(SpriteBatch spriteBatch)
{
spriteBatch.Draw(spriteTexture, spritePosition, Color.White);
}
}
}

Последний раз редактировалось Renat21; 24.06.2011 в 19:04.
Renat21 вне форума Ответить с цитированием
Старый 25.06.2011, 18:49   #2
Biggs
Пользователь
 
Регистрация: 15.07.2010
Сообщений: 74
По умолчанию

У меня твой код работает
Картинку ложишь в паку с Content в скобках
Кстати ,а зачем у тебя собака перед именем картинки ?
Biggs вне форума Ответить с цитированием
Старый 25.06.2011, 19:58   #3
G-Kyller
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 67
По умолчанию

Цитата:
Кстати ,а зачем у тебя собака перед именем картинки ?
Проще поставить одну собаку в начале чем потом в 10 местах двойной слэш, собака там оправдана
Если помог, жми спасибо
G-Kyller вне форума Ответить с цитированием
Старый 25.06.2011, 20:57   #4
Biggs
Пользователь
 
Регистрация: 15.07.2010
Сообщений: 74
По умолчанию

Окей , спасибо за информацию
Biggs вне форума Ответить с цитированием
Старый 26.06.2011, 14:43   #5
Renat21
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Biggs Посмотреть сообщение
У меня твой код работает
Картинку ложишь в паку с Content в скобках
Да я понял свою ошибку! Спасибо за помощь! Ошибка заключалась в следующем: корневой каталог был указан как раз таки Content вот здесь:

Content.RootDirectory = "Content";

И независимо от того указываю я загрузку спрайта: sprite.Load(Content, @"Textures\Main"); или нет компилятор будет искать файл не в папке Content\Textures а в папке Content и поэтому необходимо указывать, к примеру, вот так:

Content.RootDirectory = "Content//Textures";

И потом указать имя файла при загрузке:

sprite.Load(Content, "Main");

Но этот способ не удобен тем, что в игру будут загружаться не только спрайты, но и какие-либо звуковые и видео файлы, поэтому следует удалить строчку Content.RootDirectory = "Content"; и лишь при загрузке спрайта указывать путь, например, вот так:

sprite.Load(Content, "Content//Textures//Main");

Я попробовал картинка загружается! Все OK! Спасибо всем кто мне помог!!!

Последний раз редактировалось Renat21; 26.06.2011 в 14:58.
Renat21 вне форума Ответить с цитированием
Старый 27.06.2011, 13:46   #6
Biggs
Пользователь
 
Регистрация: 15.07.2010
Сообщений: 74
По умолчанию

Прости, ты как добавляешь файлы?
Я Content->Add->Add Existing Item
В Content.Load пишешь имя и тип файла , путь не прописывая , тока имя файла
Biggs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C#] Создаю игру на XNA Game Studio 4.0. Теория создания карт, редактора и другое Casper-SC Gamedev - cоздание игр: Unity, OpenGL, DirectX 12 07.09.2010 00:52
XNA Game Studio или VC++? VintProg Свободное общение 6 02.09.2010 17:50
XNA Game Studio 4.0. Проблемы с запуском. Подробности в теме... Casper-SC Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 30.08.2010 09:07
Вопрос по 3d game studio Goblin Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 10.05.2010 19:51
Знакомы вы с 3d game studio ? House Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 30.07.2008 12:56