2017-05-31 2696 views
0

我跟隨並完成了一個Unity tutorial然而,一旦教程被說完並完成,就沒有提到重新啓動遊戲的功能。如何將重新啓動功能添加到Unity中的遊戲?

除了關閉應用程序並重新打開之外,我該如何添加這樣的內容?

+2

的可能的複製[Unity3d重啓當前場景](https://stackoverflow.com/questions/41644156/unity3d-restart-current-scene) – Hellium

回答

4

有根本的方法來重新啓動遊戲在Unity:

.reset段每一個有用的變量,如位置,旋轉,比分爲它們的默認位置。當你使用這種方法,而不是#2,你會減少你的遊戲加載需要多少時間。

創建一個UI按鈕,然後將其拖動到編輯器中的resetButton插槽。

//Drag button from the Editor to this 
public Button resetButton; 

Vector3 defaultBallPos; 
Quaternion defaultBallRot; 
Vector3 defaultBallScale; 
int score = 0; 


void Start() 
{ 
    //Get the starting/default values 
    defaultBallPos = transform.position; 
    defaultBallRot = transform.rotation; 
    defaultBallScale = transform.localScale; 
} 

void OnEnable() 
{ 
    //Register Button Event 
    resetButton.onClick.AddListener(() => buttonCallBack()); 
} 

private void buttonCallBack() 
{ 
    UnityEngine.Debug.Log("Clicked: " + resetButton.name); 
    resetGameData(); 
} 

void resetGameData() 
{ 
    //Reset the position of the ball and set everything to the starting postion 
    transform.position = defaultBallPos; 
    transform.rotation = defaultBallRot; 
    transform.localScale = defaultBallScale; 

    //Reset other values below 
} 

void OnDisable() 
{ 
    //Un-Register Button Event 
    resetButton.onClick.RemoveAllListeners(); 
} 

.CALL SceneManager.LoadScene("sceneName");再次加載現場。當調用Button.onClick.AddListener時,您可以調用此函數。

創建UI按鈕,然後將其拖動到編輯器中的resetButton插槽。

//Drag button from the Editor to this 
public Button resetButton; 

void OnEnable() 
{ 
    //Register Button Event 
    resetButton.onClick.AddListener(() => buttonCallBack()); 
} 

private void buttonCallBack() 
{ 
    UnityEngine.Debug.Log("Clicked: " + resetButton.name); 

    //Get current scene name 
    string scene = SceneManager.GetActiveScene().name; 
    //Load it 
    SceneManager.LoadScene(scene, LoadSceneMode.Single); 
} 

void OnDisable() 
{ 
    //Un-Register Button Event 
    resetButton.onClick.RemoveAllListeners(); 
} 

決定使用哪種方法取決於場景中的對象數量以及場景加載需要多少時間。如果這個場景擁有一個帶有烘焙光照貼圖和HQ紋理的巨大世界,那麼請去#1。

+0

個人而言,我更喜歡使用的場景管理 –

+4

@SpencerPollock其實,這不是在這種情況下的偏好問題。如果你有裝載烘焙地圖和HQ紋理的巨大場景,你應該重置變量以節省加載玩家時間的時間。如果這是一個小場景,那就用#2進行。 – Programmer

+1

感謝您的回覆。 我應該添加我是一個100%的新手,那個教程是我第一次嘗試。 因此,我有點難以理解如何實施您所概述的步驟。 能否詳細說明一下?我確實嘗試瞭解文檔以作進一步解釋。 – CDoc

-1

例如,您可以重新加載主場景以重新啓動遊戲。

SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);