【问题标题】:Making a button appear after player death - Unity3D 4.6 GUI C#玩家死亡后出现按钮 - Unity3D 4.6 GUI C#
【发布时间】:2015-06-10 13:29:57
【问题描述】:

一旦玩家死亡,我将如何让它出现一个按钮?

我已经对重启级别进行了编码,并且屏幕上的按钮使用了该代码。如何使按钮不显示并且在玩家死亡之前不起作用?

回应如下。

public GameObject RESTART_BUTTON;
bool isDead = false;
void Update()
{
    if (isDead == true)
    {
        RESTART_BUTTON.gameObject.SetActive(true);
        Debug.Log("Do show game object");
    }
}

void Start()
{
    if (isDead == false)
    {
        RESTART_BUTTON.gameObject.SetActive(false);
        Debug.Log("Do Not show game object");
    }
}

void OnCollisionEnter2D(Collision2D collision)
{
    Debug.Log(collision.gameObject.tag);
    if (collision.gameObject.tag == "Death")
    {
        isDead = true;
        Debug.Log("isDead_true");
    }
}

这是我的控制台输出http://i.imgur.com/XFnOhHh.png

public void OnCollisionEnter2D(Collision2D collision)
{
    Debug.Log(collision.gameObject.tag);
    if (collision.gameObject.tag == "Death")
    {
        //Destroy(gameObject);
        isDead = true;
    } // end if including tag collision
} // End OnCollisionEnter

IEnumerator isDeath()
{
    if (isDead == true)
    {
        _animator.Play(Animator.StringToHash("Jump"));
        ;
        yield return new WaitForSeconds(2);
        Destroy(gameObject); //this will wait 5 seconds
    } // end if including boolean isDead
}

【问题讨论】:

    标签: c# user-interface unity3d


    【解决方案1】:
    public GameObject YourButton;
    

    在玩家活着时保持按钮不活动。一旦他死了,执行以下代码。

    YourButton.gameObject.setActive(true);
    

    这将激活屏幕上的按钮。

    在 void Update() 中添加此代码,并将 void start() 和冲突中的代码更改为:

     // // Update is called once per frame
     void Update () {
     if(isDead == true){
        RESTART_BUTTON.gameObject.SetActive(true);
        }
    }
    
    void Start () {
        if(isDead == false){
        RESTART_BUTTON.gameObject.SetActive(false);
        }
     }
    
    public void OnCollisionEnter2D(Collision2D collision){
    Debug.Log(collision.gameObject.tag);
    if(collision.gameObject.tag == "Death"){
        isDead = true;
    } 
    }
    

    这应该是必要的。

    【讨论】:

    • UnassignedReferenceException: OnDeathGUI 的变量 RESTART_BUTTON 没有被赋值。您可能需要在检查器中分配 OnDeathGUI 脚本的 RESTART_BUTTON 变量。 OnDeathGUI.Start () (at Assets/Scripts/OnDeathGUI.cs:10) 是不是我收到的错误...
    • 您必须将检查器中的重新启动按钮分配给 YourButton 变量。
    • 嗯,播放时肯定不会出现,但即使 isdead 布尔值为真,它也不会出现。我将使用我的代码编辑主帖。
    • 我添加了一个更新的脚本以及控制台调试日志,它似乎没有调用我的其他两个方法
    • 你用死亡标签标记你的玩家了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多