Игра XNA - воспроизведение видео в качестве начального экрана - PullRequest
2 голосов
/ 12 сентября 2011

Я хочу воспроизвести видео в качестве начального экрана игры XNA Игра представляет собой 3D-игру ( XNA 3.1 ) ( Основана на знаменитой гоночной игре XNA - http://exdream.com/XnaRacingGame/). Я использую IGameScreen Интерфейс. Я хочу играть в видео ( wmv файл формата ) с началом игры . Нет необходимости воспроизводить видео в полноэкранном режиме.

Пожалуйста, помогите мне. Спасибо.

1 Ответ

3 голосов
/ 12 сентября 2011

Создайте новый IGameScreen, который будет добавлен в вашу игру при запуске.Перенесите его на другой IGameScreen, когда пользователь нажмет клавишу или через X секунд, где X - длина вашей игры.

Как члены вашего объекта GameScreen, вам понадобится VideoPlayer и член видео.Вот так ...

VideoPlayer videoPlayer;
Video video;

В вашем GameScreen LoadContent вам нужно будет загрузить видео, а если вы еще этого не сделали, создайте объект VideoPlayer.Вот так ...

video = content.Load<Video>("yourvideoname");
videoPlayer = new VideoPlayer();

Хорошо, теперь в какой-то момент вы захотите запустить свой видеоплеер.Вы можете сделать это в вашем методе обновления, когда будете в первый раз.Не делайте этого при каждом вызове Обновления.

videoPlayer.Play(video)

Каждый раз, когда вызывается ваш метод Draw, вы хотите получить текстуру из видеопроигрывателя последнего кадра, но только если проигрыватель видео воспроизводится,Если текстура заполнена, нарисуйте ее.Вы должны указать целевой прямоугольник, в котором вы хотите его видеть, или вы можете выбрать одну из других перегрузок SpriteBatch.Draw.Убедитесь, что вы вызвали вызовы SpriteBatch.Begin / End в своем коде.

if(videoPlayer.State != MediaState.Stopped)
{
  Texture2D texture = videoPlayer.GetTexture();
  if(texture != null)
  {
    spriteBatch.Draw(texture, new Rectangle(0, 0, YOURWIDTH, YOURHEIGHT),
        Color.White);
  }
}

Определенно есть некоторые улучшения, которые вы могли бы сделать с помощью кода, чтобы помочь сборщику мусора и сделать его более производительным (например, donне создавать новый прямоугольник каждый раз), но это самая низкая часть показа видео.

...