重新启动按钮Unity 3d C#

时间:2018-08-19 14:52:29

标签: c# unity3d unity-ui

我在做游戏。在我的游戏中,一个球在旋转,如果它撞到陷阱,它将死亡,并且您必须重新启动。我的问题是:当您按下陷阱时,我无法找到一种使按钮出现在当前场景上的方法。我使用C#编写脚本。

using UnityEngine;

public class PlayerCollision : MonoBehaviour{
public Rigidbody rb;

void OnCollisionEnter(Collision collisionInfo)
{
    if (collisionInfo.collider.name == "Trap_Spike")
    {

        FindObjectOfType<Gamemanager>().RestartGame();




    }
}

}

陷阱上有标签Trap_Spike。

我的RestartGame脚本如下:

using UnityEngine;

public class Gamemanager : MonoBehaviour{

public void RestartGame()
{


}

}

因此,我会竭尽所能获得帮助

2 个答案:

答案 0 :(得分:2)

Button对象下有一个Canvas。 取消选中此复选框,可以停用层次结构中的按钮。

enter image description here

在您的Gamemanager脚本中有一个字段

Button ResetButton;

将按钮附加到Unity Inspector中的此字段。

要显示按钮,请在RestartGame()

中执行此操作
ResetButton.gameObject.SetActive(true);

答案 1 :(得分:1)

要显示一个按钮,您需要一个带有按钮的画布。

右键单击您的层次结构,然后选择UI->按钮。这将创建必要的对象:Canvas / Button和EventSystem。将EventSystem保留在原位置,它与Canvas相关,但是您不必关心它,只需暂时将其保留。

因此,您想隐藏该画布,然后在RestartGame上显示它,对吧?因此,请通过在检查器中选中复选框来禁用它,然后在GameManager中执行以下操作:

public void RestartGame()
{
    FindObjectOfType<Canvas>().setActive(true);
}

您还需要注册单击按钮时发生的情况。该脚本假定它已附加到具有UI按钮的GameObject上:

void Start() {
    GetComponent<Button>().onClick.AddListener(RestartScene);
}

void RestartScene() {
    SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);