如何在游戏结束时显示按钮?

时间:2015-12-29 18:33:10

标签: c# user-interface unity3d

几天前我开始使用Unity,我使用官方教程来学习。我有第一场比赛,我开始喜欢编程。我对此非常陌生,如果我更好地制作这些教程游戏,它会对我有所帮助。一切都很好,但现在我被卡住了。我想要一个在赢得比赛时出现的菜单。我做了菜单,它有3个按钮('再试一次','菜单'和'退出')。这是一张图片:http://prntscr.com/9jy71h。按钮有效,但我唯一的问题是它们出现在整个游戏中,而我最后只想要它们。我尝试了很多,但我似乎总是得到这个错误:当前上下文中不存在“重试”。

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class PlayerController : MonoBehaviour {
    public float speed; 
    public Text countText;
    public Text winText;    
    private Rigidbody rb;
    private int count;

    void Start ()
    // The game starts here.
    {
        rb = GetComponent<Rigidbody>();
        count = 0;
        SetCountText ();
        winText.text = "";
        Retry.GameObject.SetActive(false);
        Menu.GameObject.SetActive(false);
        Exit.GameObject.SetActive(false);
   }

   void FixedUpdate ()
   // Movement.
   {
       float moveHorizontal = Input.GetAxis ("Horizontal");
       float moveVertical = Input.GetAxis ("Vertical");

       Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);

       rb.AddForce (movement * speed);
   }
   void OnTriggerEnter(Collider other)
   // Picking things up and count score.
   {
       if (other.gameObject.CompareTag("Pick Up"))
       {
           other.gameObject.SetActive (false);
           count = count + 1;
           SetCountText ();
       }
   }

   void SetCountText ()
   {
       countText.text = "Count:" + count.ToString ();
       if (count >= 12)
       // End of the game, you won.
       {
            winText.text = "You win!";
            Retry.GameObject.SetActive(true);
            Menu.GameObject.SetActive(true);
            Exit.GameObject.SetActive(true);
       }
   }
}

为什么他不能识别我制作的游戏对象? (你在图片上看到的按钮)抱歉我的英文不好,感谢您花时间阅读本文以及可能的答案。

编辑:http://prntscr.com/9jybke这些都是错误。但是,如果我删除顶部和底部的6个游戏目标(bool),它可以正常工作,但我一直都在打开菜单。

2 个答案:

答案 0 :(得分:0)

您缺少的是从脚本到按钮游戏对象的引用,以便您可以打开/关闭它们。

如果您添加到脚本

public GameObject retryButton;

类似于其他按钮,然后在Unity的检查器中,您可以将三个按钮GameObjects拖动到检查器中相应的“插槽”。

然后在您的代码中,将Retry.GameObject.SetActive()替换为retryButton.SetActive()

同样适用于其他按钮。

实际上,您似乎已经在为“countText”和“winText”执行此操作。

答案 1 :(得分:0)

尝试将按钮放在游戏对象中并使用对象 .SetActive(false) 它对我有用。