07.05.2024 00:07:35
Навигация
· XNA FAQ
· С чего начать
· Конкурсы
· Обратная связь
· XNA Блоги
Сейчас на сайте
· Гостей: 1

· Пользователей: 0

· Всего пользователей: 7,142
· Новый пользователь: Sarahseato
Последние фото
Thurs Puzzle
Thurs Puzzle
Альбом: XNA Games

Thurs Puzzle
Thurs Puzzle
Альбом: XNA Games

Thurs Puzzle
Thurs Puzzle
Альбом: XNA Games

Блоги
general
» Unity3D – Chunky ...
general
» Unity3D: Simple p...
dampirik
» Записки программи...
dampirik
» Локализация прило...
dampirik
» Эффективность рас...
general
» HLSL: Шейдер воды
general
» Unity 3D: Управле...
general
» Unity 3D: FPS scr...
yavshoke
» XboxOne - интерес...
dampirik
» Push уведомления ...
Поддержка
microsoft.com
1gb.ru - Дом для вашего сайта
Урок 2. Как создать простой игровой цикл
Создание игрового цикла - каркаса для XNA приложений.

Итак в нашем проекте есть всего лишь один файл с кодом класса Program:

using System;
using System.Collections.Generic;
using System.Text;
 
namespace Tutorial1
{
class Program
{
static void Main(string[] args)
{
}
}
}

 

Шаг 2. Наследуйте уже имеющийся в вашем распоряжении класс Program от класса Game, определённого в пространстве имён Microsoft.Xna.Framework. Так как мы добавили ссылку на пространство имён Microsoft.Xna.Framework, то мы можем указать просто имя класса Game.
class Program : Game 
{
static void Main(string[] args)
{
}
}

 

Шаг 3. Объявите в классе Program поле graphics типа GraphicsDeviceManager который определён в пространстве имён Microsoft.Xna.Framework. С помощью этого объекта мы будем иметь возможность выводить графику на экран.
class Program : Game 
{
GraphicsDeviceManager graphics;
 
static void Main(string[] args)
{
}
}

 

Шаг 4. Создайте конструктор класса Program. Добавьте в него код создания экземпляра графического компонента GraphicsDeviceManager и добавления его в список компонентов класса Program:

class Program : Game 
{
GraphicsDeviceManager graphics;
 
public Program()
{
graphics = new GraphicsDeviceManager();
}
 
static void Main(string[] args)
{
}
}

 

Шаг 5. Переопределите в классе Program методы унаследованные от класса Game - Update() и Draw(). Эти методы вызываются при запуске приложения, при необходимости обновить состояние приложения, при необходимости отрисовать сцену и перед закрытием приложения соответственно.
class Program : Game 
{
GraphicsComponent graphics;
 
public Program()
{
graphics = new GraphicsDeviceManager();
}
 
protected override void Update(GameTime gameTime)
{
// обновить состояние объектов
}
 
protected override void Draw(GameTime gameTime)
{
// отрисовать сцену
}
 
 
static void Main(string[] args)
{
}
}

 

Шаг 6. Добавьте в метод отрисовки цены Draw() команды отчистки экрана и вывода сцены на экран:

 

protected override void Draw(GameTime gameTime) 
{
  // отчистка экрана в синий цвет
graphics.GraphicsDevice.Clear(Color.Blue);
 
base.Draw(gameTime);// вывод сцены
}
 

 

Шаг 7. Добавьте в статический метод Main код создания объёкта класса Program и запуска игрового цикла путём вызова метода Run(), который был унаследован классом Program от класса Game:

 

static void Main(string[] args)
{
using (Program game = new Program())
{
game.Run();
}
}


Итак, метод Main() - это точка входа в программу и именно с него начинается работа всей программы. Здесь мы создаём экземпляр нашего класса Program и вызовом метода Run() запускаем игровой цикл внутри класса Program.

В самом начале работы цикла вызывается метод LoadContent() - в нём мы можем сделать все необходимые приготовления, например, загрузить из файлов модели, текстуры и т.д.

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

Метод Draw() как правило всегда начинается с вызова методов отчистки экрана и заканчивается с выводом сцены на экран.

Перед закрытием приложения вызывается метод UnloadContent() - в нём мы можем освободить память от загруженных ранее ресурсов (моделей, текстур и т.д.)

Теперь при запуске приложения мы увидим пустое окно окрашенное в синий цвет.

Комментарии
#1 | Bungu 22.02.2010 14:20:59
На шаге 4 требуется передать аргумент this в GraphicsDeviceManager();

GeSHi: C#
  1. public Program()
  2. {
  3. graphics = new GraphicsDeviceManager(this);
  4. }
Добавлено за 0.004 секунд, используя GeSHi 1.0.8.2
#2 | wolfitar 31.10.2010 21:34:57
Есть опыт программирования игр, на Delphi, C++, всю жизнь думал, что игровой цикл создается с помощью цикла, а тут как-то пока непонятно для меня, может кто-то подробно объяснить в чем тут сутьНе хило?
#3 | Hale_32bit 31.10.2010 21:38:35
Цикл уже есть ничего создавать не надо.

В двух словах можно сказать, что методы Update и Draw и есть внутренность цикла и чтобы создать игру нужно просто их заполнить. Smile
#4 | galius_julius 05.02.2011 15:55:36
ИМХО
уроки 1 и 2 можно слить в один.
Я так и не понял, чем они отличаются?!!!Wink
#5 | vjmap 03.06.2011 21:30:01
во 2 уроке должна быть новая информация, отличная от первого урока. А не 7 новых строчек текста в конце.
#6 | apocalypsis 11.10.2011 10:07:48
Урок 2 более подробное разъяснение 1го урока думаю тут и медъвед пойиет в чем тут сутьSmile
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Отлично! Отлично! 17% [1 Голос]
Очень хорошо Очень хорошо 83% [5 Голоса]
Хорошо Хорошо 0% [Нет голосов]
Удовлетворительно Удовлетворительно 0% [Нет голосов]
Плохо Плохо 0% [Нет голосов]
Авторизация
Логин

Пароль



Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

11.12.2023

11.12.2023
[img]https://x.pin
-up-world.com/imag
es/img4.jpg[/img]
[url=https://ofoi.
cenditt.loan/new-k
atiana-kay-fucking
-with-lucky-fan-p1
-porn-scenes/]133K
67% New Katiana

11.12.2023
[img]https://wwt.s
sgameadmin2.com/im
ages/img4.jpg[/img
]
[url=https://k.smi
letaxservice.com/r
edirect/SFpEdDR1cG
V4czNKMmxlQi9tVytI
d3dxWW9GWTd5Zk52TD
VVMG1mc3YvUmlDMWUw

11.12.2023

11.12.2023

10.12.2023
[img]https://ey.os
prey-holidays.uk/i
mages/img10.jpg[/i
mg]
[url=https://nby.h
ighlyresponsible.c
om/696488/sexyfeet
girl2020-gotta-kee
p-them-soft-lookin
g-

30.11.2023
[img]https://nuggi
e.army/images/img1
5.jpg[/img]
German Porno kostenlos - Deutsche Pornos & Pornofilme. [url=ht

30.11.2023

30.11.2023
[img]https://where
ijoin.com/images/i
mg8.jpg[/img]
Voir Films VF VOSTFR - . [url=http://mvig.j
ulieemontelaro.com
/]omegleX

30.11.2023
[img]https://steam
unlocked.tangobliv
ion.com/images/img
14.jpg[/img]
Top - Rated Live Sex Cam Videos to Watch Online. [

29.11.2023

29.11.2023
[img]https://chaii
t.com/images/img8.
jpg[/img]
Ottmaza.live - Ottmaza.Com Official Website | Ottmaza | Ottmaza.Net | Ottmaz

29.11.2023
[img]https://ezyja
mb.co.uk/images/im
g10.jpg[/img]
Free Porn - Sex, Tube Videos, XXX Pics, Pussy in Porno

29.11.2023
[img]https://launc
hbusinessloans.org
/images/img15.jpg[
/img]
Asyalı - Koreli Japon Seks Filmleri Türkçe A

29.11.2023
[img]https://panen
poker.org/images/i
mg8.jpg[/img]
[url=http://watchm
ovies.seoullittlem
all.com/]Junkie Musik Lossless &#ff7dee MГєsica ElectrГіnica p

RSS каналы сайта
XNA - Новости
XNA - Статьи
XNA - Форум
XNA - Галерея
XNA - Файлы
Время загрузки: 0,12 секунд 13,298,531 уникальных посетителей