我已经关注并完成了一个 Unity tutorial然而,一旦教程说完了,就没有提到重新启动游戏的功能。
除了关闭应用程序并重新打开之外,我将如何添加这样的内容?
最佳答案
在 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。
关于c# - 如何在 Unity 中为游戏添加重启功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44288452/