2017-03-03 98 views
0

在我的LibGdx游戏中,我创建了暂停功能。在玩游戏时,如果按暂停按钮,将显示一个带有恢复按钮的单独屏幕。绘制暂停屏幕作为播放屏幕上的图层 - LibGdx

实际上我想要做的是暂停屏幕应该像游戏一样出现在游戏屏幕上方。

象下面这样的游戏的截屏:

enter image description here

我只能让我在游戏中有独立的BG和所有新的暂停画面。 我想显示暂停的游戏,因为它是。我可以绘制恢复按钮,框等图形完全像屏幕截图。

我怎样才能让这个图层像显示暂停屏幕一样?

+0

不知道我理解你的问题,因为答案似乎很明显。画出你的游戏,然后绘制UI。它们是同一屏幕的一部分。 – Tenfour04

+0

在我的情况下,我正在使用单独的屏幕进行暂停。我想使图层只显示为单独的屏幕。当我尝试这样做时,我在暂停ui周围获得黑色背景。那就是问题所在。简而言之,我想像弹出一样显示暂停屏幕。 – Niranjana

+0

@Niranjana您是否使用了scene2d作为您的粘贴纸,或者您可以使用GameScreen? – Aryan

回答

2

在Gamescreen中,您使用的是用户界面(按钮导航)。我很确定你是这样做的。

private uiStage; 
private boolean isPause; 
private Group pauseGroup; 

public void render(){ 

    if(!isPause) UpdateGame();  
    DrawGame();   

    uiStage.act(); 
    uiStage.draw(); 
} 

如果想暂停游戏并在想要恢复游戏时删除该组,请创建一个组。您也可以创建一次您的组,并在show()方法中添加所有暂停UI。当您想要显示暂停并在您恢复游戏时删除时,将该组添加到舞台。

public void pauseGame(){ 

    isPause = true; 
    pauseGroup = new Group; 
    Image semiTransparentBG= ...... 
    // setSize(Size of screen) and make it semi transparent. 
    pauseGroup.addActor(semiTransparentBG); 

    //crate all other pause UI buttons with listener and add to pauseGroup 

    stage.addActor(pauseGroup); 

} 

public void resumeGame(){ 

    if(isPause){ 
     isPause=false; 
     pauseGroup.remove(); 
    } 
} 
+0

因此,不需要使用单独的屏幕暂停,对吗?我可以创建组并在游戏状态暂停时显示它,对吧? – Niranjana

+0

@Niranjana一次只能设置一个屏幕(屏幕是Game类的数据成员)。 pauseGroup在我的建议中是很好的选择。 – Aryan

+1

它工作。感谢很多! – Niranjana

0

简答:是的,你可以。 首先让您的暂停屏幕扩展Stage类而不是Screen类。然后尝试在游戏结束后调用暂停屏幕的绘制。类似这样的:

public void render(){ 
    UpdateGame(); 
    pause_screen.act(); 

    DrawGame(); 
    pause_screen.draw(); 
} 

当暂停屏幕打开时停止游戏更新。 关闭当然这是过于简化,但你可以看看它。