2017-03-03 129 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(); 
} 

當暫停屏幕打開時停止遊戲更新。 關閉當然這是過於簡化,但你可以看看它。