【问题标题】:Restart Button Unity 3d C# [duplicate]重新启动按钮 Unity 3d C# [重复]
【发布时间】:2019-01-25 21:11:15
【问题描述】:

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


}

}

因此,我将竭诚为您提供任何帮助

【问题讨论】:

    标签: c# unity3d unity-ui


    【解决方案1】:

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

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

    Button ResetButton;
    

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

    要显示按钮,请在 RestartGame() 中执行此操作

    ResetButton.gameObject.SetActive(true);
    

    【讨论】:

    • 哈哈,我们的个人资料和名字非常相似。显然,伟大的思想具有相同的想法,并且具有相同的名称。哦,彼此相距约 10 分钟。
    • @Maakep 哈哈 :)
    【解决方案2】:

    要显示一个按钮,您需要一个带有按钮的 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      • 2021-10-30
      • 2015-08-11
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 2017-04-14
      相关资源
      最近更新 更多