如何通过Unity 2D脚本重新启动当前场景以重置精灵?

5

我正在寻找适用于Unity 2D的脚本。我需要一个能够重新加载我当前已加载场景的脚本。我试过从互联网上下载几个,但似乎都不起作用。我只需要基本的脚本,不需要任何触发方式,因为这个我可以自己实现。谢谢提前!


你先尝试查找Unity文档了吗?因为你应该首先看到的是SceneManager类。通过这个类,你可以直接调用SceneManager.LoadScene(SceneManager.GetActiveScene)。使用这个脚本,你可以重新启动活动场景。 - SeLeCtRa
3个回答

6

这是我做过的:

void Start()
{
    Button Button = this.GetComponent<Button>();
    Button.onClick.AddListener(Reset);
}

public void Reset()
{
    SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}

它只需要一个构建索引。

2
我建议您查看Unity Docs中的SceneManager类。
但是,您可以使用此行重新加载当前场景,从而重新启动它:
SceneManager.LoadScene(SceneManager.GetActiveScene());

希望这回答了你的问题。

根据Unity文档,它似乎应该能够工作,但事实并非如此。我是在与另一个对象的碰撞中触发它的。我的碰撞脚本是:private void OnCollisionStay2D(Collision2D collision) { SceneManager.LoadScene(SceneManager.GetActiveScene()); } 这对于其他的碰撞事物有效,但不适用于重新加载场景。我不知道我的代码是否有问题还是你们的问题。 - LincolnHartlaub77
你尝试验证一下你的OnCollisionStay2D是否被调用了吗?试着在你的碰撞函数里加入Debug.Log("Collision"),然后检查一下它是否起作用。 - Madhusudan Sharma

2
SceneManager.LoadScene(SceneManager.GetActiveScene().name);

1
“仅代码答案不是高质量的答案”(https://meta.stackoverflow.com/questions/392712/explaining-entirely-code-based-answers)。虽然这段代码可能有用,但您可以通过解释它为什么有效、如何有效、何时应该使用以及其限制是什么来改进它。请编辑您的答案,包括解释和相关文档链接。 - Dorian Turba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接