Создание игрового цикла - каркаса для 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() - в нём мы можем освободить память от загруженных ранее ресурсов (моделей, текстур и т.д.)
Теперь при запуске приложения мы увидим пустое окно окрашенное в синий цвет.
Источник: http://www.xnadev.ru/articles.php?cat_id=2 |