我在做游戏。在我的游戏中,一个球在旋转,如果它撞到陷阱,它将死亡,并且您必须重新启动。我的问题是:当您按下陷阱时,我无法找到一种使按钮出现在当前场景上的方法。我使用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()
{
}
}
因此,我会竭尽所能获得帮助
答案 0 :(得分:2)
在Button
对象下有一个Canvas
。
取消选中此复选框,可以停用层次结构中的按钮。
在您的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);