XNA с Microsoft Visual C# 2010 Express (Вопрос - ответ)
|
|
Lorderon | Дата: Понедельник, 22 Ноября 2010, 19:09 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Придлогаю в этой теме начать такой порядок: вопрос - ответ. Всё происходит по среде разработке Microsoft Visual C# 2010 Express. -------------------------------------------------------------------------------- Первый вопрос: у меня при редактировании не чего не пишет в ошибках, но когда я компилирую, у меня пишет вот это: "Ссылка на объект не указывает на экземпляр объекта.". Вот строка из-за которой эта проблемма: "Code backgroundTexture = content.Load<Texture2D>("CityGroundSmall.jpg"); "
Сообщение отредактировал Lorderon - Понедельник, 22 Ноября 2010, 19:14 |
|
| |
Mogby01 | Дата: Понедельник, 22 Ноября 2010, 20:43 | Сообщение # 2 |
был не раз
Сейчас нет на сайте
| В той строке, которую ты привел нужно убрать расширение файла.Т.е. должно быть не backgroundTexture = content.Load<Texture2D>("CityGroundSmall.jpg"); а backgroundTexture = content.Load<Texture2D>("CityGroundSmall"); Если не получится - говори
|
|
| |
Lorderon | Дата: Понедельник, 22 Ноября 2010, 20:51 | Сообщение # 3 |
старожил
Сейчас нет на сайте
| Неполучилось.Code 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 WindowsGame7 { /// <summary> /// This is the main type for your game /// </summary> public class Game1 : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; SpriteBatch spriteBatch; Texture2D backgroundTexture; SpriteBatch sprites; ContentManager content; public Game1() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; }
/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { backgroundTexture = content.Load<Texture2D>("CityGroundSmall"); sprites = new SpriteBatch(graphics.GraphicsDevice); base.Initialize(); } // Initialize()
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // 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
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) { graphics.GraphicsDevice.Clear(Color.Green);
sprites.Begin(); sprites.Draw(backgroundTexture, Vector2.Zero, Color.White); sprites.End(); base.Draw(gameTime); } // Draw(gameTime) } }
|
|
| |
Mogby01 | Дата: Понедельник, 22 Ноября 2010, 21:08 | Сообщение # 4 |
был не раз
Сейчас нет на сайте
| Ща запщу C#, посмотрю... Добавлено (22.11.2010, 21:08) --------------------------------------------- Ахахахахаххх!!!!Мы с тобой два лоха!!!Я пацталом!!!Как я не заметил сразу!!!???Надо было заместо backgroundTexture = content.Load<Texture2D>("CityGroundSmall"); писать backgroundTexture = Content.Load<Texture2D>("CityGroundSmall");Т.е. Content надо писать с большрй буквы.Мы оба хороши хД
|
|
| |
Lorderon | Дата: Понедельник, 22 Ноября 2010, 21:20 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| Теперь пишет, что путь к файлу не правелен... как его надо писать. Учитываю что я добавил картинку в проект.
Сообщение отредактировал Lorderon - Понедельник, 22 Ноября 2010, 21:28 |
|
| |
Mogby01 | Дата: Понедельник, 22 Ноября 2010, 21:28 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| мда....можешь скрин сделать?
|
|
| |
Lorderon | Дата: Понедельник, 22 Ноября 2010, 21:45 | Сообщение # 7 |
старожил
Сейчас нет на сайте
| http://savepic.org/886942.gif а потом http://savepic.org/886942.gif
|
|
| |
ezhickovich | Дата: Понедельник, 22 Ноября 2010, 21:48 | Сообщение # 8 |
[Великий и могучий хозяинъ]
Сейчас нет на сайте
| Lorderon, картинка должна лежать в рабочей папке проекта...
Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
|
|
| |
Lorderon | Дата: Понедельник, 22 Ноября 2010, 21:53 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| Вот: C:\Documents and Settings\Lord_Aeron\Мои документы\Visual Studio 2010\Projects\WindowsGame7\WindowsGame7\WindowsGame7 Єто ведь папка проекта? Суда, или в какюето доп. директорию закинуть надо?
|
|
| |
ezhickovich | Дата: Понедельник, 22 Ноября 2010, 21:55 | Сообщение # 10 |
[Великий и могучий хозяинъ]
Сейчас нет на сайте
| Посмотри в настройках проекта должен быть путь к рабочей директории... Вообще в ней обычно располагается файл проекта (НЕ РЕШЕНИЯ, А ПРОЕКТА!)
Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
|
|
| |
Mogby01 | Дата: Понедельник, 22 Ноября 2010, 22:06 | Сообщение # 11 |
был не раз
Сейчас нет на сайте
| Нененененененене!Нужно нажать правой кнопкой мыши на папке Content в обозревателе проектов(в C# обычно находится справа) и выбрать "Существующий файл", дальше выбираешь свою картинку и нажимаешь ок
|
|
| |
ezhickovich | Дата: Понедельник, 22 Ноября 2010, 22:14 | Сообщение # 12 |
[Великий и могучий хозяинъ]
Сейчас нет на сайте
| Ну я с XNA не знаком =)
Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
|
|
| |
Mogby01 | Дата: Понедельник, 22 Ноября 2010, 22:17 | Сообщение # 13 |
был не раз
Сейчас нет на сайте
| да ладно...по сути твой совет дельный, только немного неполный/неточный.
|
|
| |
nilrem | Дата: Понедельник, 22 Ноября 2010, 22:20 | Сообщение # 14 |
Просветленный разум
Сейчас нет на сайте
| Вообще-то при создании ХНА проекта вместо одного проекта создается сразу 2. В первом содержится код. Во второй проект (возле него в скобках написано Content) и нужно добавлять ресурсы. При этом, не зависимо от их расположения, ресурсы автоматически копируются в папку заданную в строке Code Content.RootDirectory = "Content"; В этой папке программа и ищет эти самые ресурсы. Кроме того, после добавления такого ресурса, ему задается свойство Asset Name, которое нужно использовать в коде.
Windmill 2
WindMill 2D Game Engine
|
|
| |
Mogby01 | Дата: Понедельник, 22 Ноября 2010, 22:23 | Сообщение # 15 |
был не раз
Сейчас нет на сайте
| Я знаю это.Тока я думал, что Content это не проект а просто особая папка. Оо =)
|
|
| |
nilrem | Дата: Понедельник, 22 Ноября 2010, 22:46 | Сообщение # 16 |
Просветленный разум
Сейчас нет на сайте
| Quote (Mogby01) Я знаю это.Тока я думал, что Content это не проект а просто особая папка. Оо =) Что-то не верится. Выше Lorderon выложил скрины, на которых отлично видно, что изображение добавлено не туда, куда надо - не в тот проект.
Windmill 2
WindMill 2D Game Engine
|
|
| |
Lorderon | Дата: Понедельник, 22 Ноября 2010, 23:06 | Сообщение # 17 |
старожил
Сейчас нет на сайте
| Повтыкивал во все папки какие можно. Имя проверил - всё правильно, а пишет тоже самое. Такое ощущёние, что ответ под самым носом, но из-за тумана непрофисиональизма, я не могу найти его... Сделайте пожалуйста мини-урок со скринами... я конкретно туплю...
|
|
| |
ezhickovich | Дата: Понедельник, 22 Ноября 2010, 23:08 | Сообщение # 18 |
[Великий и могучий хозяинъ]
Сейчас нет на сайте
| Quote (Lorderon) Сделайте пожалуйста мини-урок со скринами... я конкретно туплю... Добавь его в проект Content - тебе уже сказали...
Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
|
|
| |
Lorderon | Дата: Понедельник, 22 Ноября 2010, 23:11 | Сообщение # 19 |
старожил
Сейчас нет на сайте
| Я подобавлял! ------------------------- Блин, давно не нубствовал...
|
|
| |
Lorderon | Дата: Понедельник, 22 Ноября 2010, 23:24 | Сообщение # 20 |
старожил
Сейчас нет на сайте
| Code 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 WindowsGame7 { /// <summary> /// This is the main type for your game /// </summary> public class Game1 : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; SpriteBatch spriteBatch; Texture2D backgroundTexture; SpriteBatch sprites; ContentManager content; public Game1() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; }
/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { backgroundTexture = Content.Load<Texture2D>("CityGroundSmall"); sprites = new SpriteBatch(graphics.GraphicsDevice); base.Initialize(); } // Initialize()
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // 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
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) { graphics.GraphicsDevice.Clear(Color.Green);
sprites.Begin(); sprites.Draw(backgroundTexture, Vector2.Zero, Color.White); sprites.End(); base.Draw(gameTime); } // Draw(gameTime) } } Вот вся дериктория весит 214 кб
|
|
| |