显示视频C#XNA时滞后

时间:2014-05-03 17:19:26

标签: c# video xna 2d lag

当我尝试在我的视频游戏中显示背景之星视频+某些2D精灵时,我遇到了几个Lags问题:

看看这些图片,了解我在说什么:

http://digital-art-studios.e-monsite.com/medias/images/jeu2.jpg

http://digital-art-studios.e-monsite.com/medias/images/jeu4.jpg

当我玩游戏时,移动我的船只或使一些星辰爆炸。 有一些非常不愉快的freez,这会破坏玩乐的乐趣。

你能告诉我为什么会这样吗?

谢谢:)

2 个答案:

答案 0 :(得分:0)

这是代码:

宣言:

    Video video;
    VideoPlayer player;
    Texture2D videoTexture;

LoadContent:

   video = Content.Load<Video>(@"VIDEOS\VIDEO_BACKGROUND_LEVEL_1");
   player = new VideoPlayer();

更新:

   if (allVariable.fenetre_Niveau_1_Wolf_359 == true || 
   allVariable.fenetreAfficherStats == true) //Background LEVEL 1
        {

            if (player.State == MediaState.Stopped || allVariable.enablePause == false)
            {
                player.IsLooped = true;
                player.Play(video);
            }

            if (allVariable.enablePause == true)
                player.Pause();
        }

画画:

if (allVariable.fenetre_Niveau_1_Wolf_359 == true || allVariable.fenetreAfficherStats == true)
        {

            spriteBatch.Draw(allVariable.backgroundAntibug, new Rectangle(0, 0, 1600, 900), Color.White);

            // Only call GetTexture if a video is playing or paused
            if (player.State != MediaState.Stopped)
                videoTexture = player.GetTexture();

            // Draw the video, if we have a texture to draw.
            if (videoTexture != null)
            {
                spriteBatch.Draw(videoTexture, new Rectangle(0, 0, 1600, 900), Color.White);
            }
        }

答案 1 :(得分:0)

作为一般经验法则,播放视频同时在其上放置多个对象是一个坏主意,因为它对于系统来说非常密集。

而不是使用视频(我假设您正在使用它来显示开始在后面移动),为什么不用代码创建它?

你可以通过创建一个地图,然后将你的角色移到它上面,或制作一个巨大的地图和一个可以在其上移动的相机;强迫你的播放器留在相机边框内。有了它,你可以达到同样的星星移动效果,但不会影响性能。

如果创建一个巨大的地图+相机是不可能的,无论出于何种原因,你可以创建一个自动滚动背景,这是一个不断在背景上移动的Texture2D。

自动滚动选项是最简单的选项,您可以查看如何实施一个here