1

我正在制作游戏。在我的游戏中,一个球在四处移动,如果它击中一个陷阱,它就会死掉,你将不得不重新开始。我的问题是:当你击中陷阱时,我想不出一种方法让按钮出现在当前场景中。我在 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()
{


}

}

所以我愿意寻求任何我能得到的帮助

4

2 回答 2

2

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

在此处输入图像描述

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

Button ResetButton;

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

要显示按钮,请在RestartGame()

ResetButton.gameObject.SetActive(true);
于 2018-08-19T15:01:38.053 回答
1

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

右键单击您的层次结构并选择 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);
于 2018-08-19T15:04:07.270 回答