Кнопка перезагрузки Unity 3d C#
Я делаю игру. В моей игре мяч вращается, и если он попадет в ловушку, он умрет, и вам придется перезапустить. Моя проблема: я не могу придумать, как сделать так, чтобы кнопка появлялась на текущей сцене, когда вы попали в ловушку. Я пишу сценарии на 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 ответа
Есть Button
под вашим Canvas
объект. Отключите кнопку в иерархии, сняв этот флажок.
В вашем Gamemanager
скрипт имеет поле
Button ResetButton;
Прикрепите кнопку к этому полю в вашем Инспекторе Unity.
Чтобы показать кнопку, сделайте это в RestartGame()
ResetButton.gameObject.SetActive(true);
Для отображения кнопки вам понадобится холст с кнопкой в нем.
Щелкните правой кнопкой мыши в вашей иерархии и выберите UI -> Button. Это создаст необходимые объекты: Canvas/Button & EventSystem. Оставьте EventSystem там, где она есть, она связана с Canvas, но вам не нужно об этом заботиться, просто оставьте ее там пока.
Таким образом, по умолчанию вы хотите скрыть этот холст, а в RestartGame вы хотите показать его, верно? Итак, отключите его, поставив галочку в инспекторе, затем в вашем GameManager вы сделаете что-то вроде:
public void RestartGame()
{
FindObjectOfType<Canvas>().setActive(true);
}
Вам нужно будет зарегистрировать то, что происходит, когда вы нажимаете кнопку. Этот скрипт предполагает, что он присоединен к GameObject, на котором есть кнопка UI:
void Start() {
GetComponent<Button>().onClick.AddListener(RestartScene);
}
void RestartScene() {
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);