Войти
ПрограммированиеФорумОбщее

не загружаются текстуры в xna

Страницы: 1 2 Следующая »
#0
6:33, 12 янв. 2009

у меня срочная проблема. а времени решать ее почти совсем нет. я установил xna 2.0 на визуал студио 2005 и у меня не импортируются текстуры в проект. короче в книге написано что нужно перетащить текстуру в solution explorer и открыть ее свойства и там должны быть поля Asset Name, Content Importer и Content Processor (у автора книги на скрине они есть). А у меня этих полей там нет!!! я не могу вставить ни одну текстуру в игру. Кто работал с xna, кто знает почему они не импортируются???


#1
9:45, 12 янв. 2009

в Солюшен Єксплорере на папочке Content пкм - add existing item, выбираешь текстуру и add (или add as link)
смотришь появилась ли она в Content. если да кликаешь на ней, по умолчанию имя ресурса (Asset Name) соответствует имени файла без расширения. можешь на создавать папочки в контенте и распихать ресы по папочам, тогда при загрузке надо указать "имя_папки\\имя_ресурса"
Загрузка Content.Load<Texture2D>(string AssetName); если ты просто тащил текстуру в солюшен мог и промазать ;) также проверь значение Content Importer и Content Proccesor, там должно стоять XNA - Texture Importer/processor

#2
11:44, 12 янв. 2009

//в Солюшен Єксплорере на папочке Content пкм - add existing item, выбираешь текстуру и add (или add as link)
смотришь появилась ли она в Content//

сделал то же самое, .png добавился, в Content появился. В свойствах нет НИ ОДНОГО  ПОЛЯ Asset Name,Content Importer и Content Proccesor.
перетаскивал любые картинки и файл wav пытался перетаксивать потом перетащил вообще из исходников аффтара контент и даже этот же контент который импортировался у афтара у меня не импортировался. тупо НЕ появляются в свойствах Asset Name, Content Importer и Content Processor, другие свойства есть например build action, copy of output directory, custom tool, custom tool namespace, file name и full puth.

Может у меня конвеер содержимого не установился или глючный, может можно его отдельно установить гденить ?

#3
11:48, 12 янв. 2009

я даже перетаскивал уже скомпиленные аффтаром исходников файлы картинок (SpaceBackground.xnb , хотел вместо своего фона вставить этот так как свой пнгэшный не вставляется), все равно ошибка в строке

Сontent.Load<Texture2D>(SpaceBackground);

#4
12:02, 12 янв. 2009

хм ... попробуй пересоздать проект с нуля и добавить файлы
не получится попробуй переустановить ХНА ...
скрин собственно третей, но там разницы нет:
Изображение

#5
12:16, 12 янв. 2009

у меня еще исходники аффтара, которые я сказал на его сайте, при открытии в vs2005 не открывабтся, чтотопишет типа не пожет быть открыт.

#6
12:19, 12 янв. 2009

СПС щас свойства открылись!! у меня просто 2 папки контент, я во вторую обычную добавлял

#7
12:25, 12 янв. 2009

А вот еще вопрос к тебе. 2008 студия чтоли уже русифицированная идет?

#8
12:34, 12 янв. 2009

да есть русская + мсдн по .net

#9
12:51, 12 янв. 2009

щас исключение какоето вылезло
Error loading "background". File not found.
в этой строке
backgroundTexture = content.Load<Texture2D>("background");

хотя я все по нормальному добавил background.png в папку Контент и установил свойство Asset Name - background.
Кстати вот еще у аффтара в Content Processor можно выбрать между полями (texture,32bpp) , DXT, DXT mip-mapped и тд. а у меня тамваще другие поля (и у тебя я вижу тоже). почему так??

#10
13:31, 12 янв. 2009

RootDirectory не забыл?
Content.RootDirectory = "Content";
backgroundTexture = content.Load<Texture2D>("background");

#11
13:39, 12 янв. 2009


Content.RootDirectory = "Content";  у меня в конструкторе стоит, контент скомпилировался в папку WindowsGame3\bin\x86\Debug\Content\sprites , я прописал Content.RootDirectory = "Content\\sprites" и не помогло. Когда контент был в  WindowsGame3\bin\x86\Debug\Content то при Content.RootDirectory = "Content" тоже была ошибка.

#12
13:52, 12 янв. 2009

хммм очень все странно, я прописал полные пути до .xnb прямо в content.Load<Texture2D> вот так
            backgroundTexture = content.Load<Texture2D>(@"C:\Documents and Settings\дятел\My Documents\Visual Studio 2005\Projects\CatsAndMouse\WindowsGame3\bin\x86\Debug\Content\sprites\background");

и все загрузилось, хотя если прописать Content.RootDirectory = "Content\sprites" то вылазила ошибка. кто знает почему??

#13
13:54, 12 янв. 2009

попробуй так
Content.RootDirectory = "Content";
backgroundTexture = content.Load<Texture2D>("sprites\\background");
или так
попробуй так
Content.RootDirectory = "Content";
backgroundTexture = content.Load<Texture2D>(@"sprites\background")

#14
14:15, 12 янв. 2009


Content.RootDirectory = "Content";
backgroundTexture = content.Load<Texture2D>(@"sprites\background")

так та же ошибка вылазит. единственный способ это            backgroundTexture = content.Load<Texture2D>(@"C:\Documents and Settings\дятел\My Documents\Visual Studio 2005\Projects\CatsAndMouse\WindowsGame3\bin\x86\Debug\Content\sprites\background"); 

кстати ты читал книгу бенжамина ницке про xna? там в примере xnaPong  у него пеерменные объявлены
    /// <summary>
    /// Remember up, down, start and back buttons for the menu.
    /// </summary>
    bool remUpPressed = false,
      remDownPressed = false,
      remSpaceOrStartPressed = false,
      remEscOrBackPressed = false;

метод апдейт их использует
    protected override void Update(GameTime gameTime)
    {
      // Remember last keyboard and gamepad states for the menu
      remUpPressed =
        gamePad.DPad.Up == ButtonState.Pressed ||
        gamePad.ThumbSticks.Left.Y > 0.5f ||
        keyboard.IsKeyDown(Keys.Up);
      remDownPressed =
        gamePad.DPad.Down == ButtonState.Pressed ||
        gamePad.ThumbSticks.Left.Y < -0.5f ||
        keyboard.IsKeyDown(Keys.Down);
      remSpaceOrStartPressed =
        gamePad.Buttons.Start == ButtonState.Pressed ||
        gamePad.Buttons.A == ButtonState.Pressed ||
        keyboard.IsKeyDown(Keys.LeftControl) ||
        keyboard.IsKeyDown(Keys.RightControl) ||
        keyboard.IsKeyDown(Keys.Space) ||
        keyboard.IsKeyDown(Keys.Enter);
      remEscOrBackPressed =
        gamePad.Buttons.Back == ButtonState.Pressed ||
        keyboard.IsKeyDown(Keys.Escape);
                          ....

и они еще есть в метода DRAW
        if ((keyboard.IsKeyDown(Keys.Down) ||
          gamePadDown) &&
          remDownPressed == false)
        {
          currentMenuItem = (currentMenuItem + 1)%3;
          soundBank.PlayCue("PongBallHit");
        } // else if
        else if ((keyboard.IsKeyDown(Keys.Up) ||
          gamePadUp) &&
          remUpPressed == false)
        {
          currentMenuItem = (currentMenuItem + 2)%3;
          soundBank.PlayCue("PongBallHit");
        } // else if
        else if ((keyboard.IsKeyDown(Keys.Space) ||
          keyboard.IsKeyDown(Keys.LeftControl) ||
          keyboard.IsKeyDown(Keys.RightControl) ||
          keyboard.IsKeyDown(Keys.Enter) ||
          gamePad.Buttons.A == ButtonState.Pressed ||
          gamePad.Buttons.Start == ButtonState.Pressed ||
          // Back or Escape exits our game on Xbox 360 and Windows
          keyboard.IsKeyDown(Keys.Escape) ||
          gamePad.Buttons.Back == ButtonState.Pressed) &&
          remSpaceOrStartPressed == false &&
          remEscOrBackPressed == false)
        {
          // Quit app.
          if (currentMenuItem == 2 ||
            keyboard.IsKeyDown(Keys.Escape) ||
            gamePad.Buttons.Back == ButtonState.Pressed)
          {
            this.Exit();
          } // if

я че т никак не врублюсь, для чего они, типа запоминать нажатые клавиши, но зачем??? но без них походу прога нормально не работает. Знаешь для чего он эти переменные юзает? И еще методы Update() и Draw() вызываются последовательно друг за другом или в разных потоках?

Страницы: 1 2 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.