如何在Unity中为游戏添加重启功能?

时间:2017-05-31 15:10:35

标签: c# unity3d

我已经关注并完成了一个Unity tutorial但是一旦完成了教程,就没有提到重启游戏的功能。

除了关闭应用程序并重新打开之外,我将如何添加这样的内容?

2 个答案:

答案 0 :(得分:6)

有很多方法可以在Unity中重启游戏:

1 。将每个有用的变量(如位置,旋转,得分)重置为默认位置。当您使用此方法而不是#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();
}

2 。拨打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。

答案 1 :(得分:0)

例如,您可以重新加载主场景以重启游戏。

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