当我尝试在我的视频游戏中显示背景之星视频+某些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,这会破坏玩乐的乐趣。
你能告诉我为什么会这样吗?
谢谢:)
答案 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。