c# - 如何使用 SetActive 从我的 GameManager 中打开我的玩家对象?

我正在编写一个小行星克隆,并且在我的播放器对象与小行星碰撞时停用后,我遇到了重新生成播放器对象的问题。我运行 SetActive(false) 函数从播放器对象中关闭对象,当我尝试使用 GameManager 中的 SetActive(true) 重新激活播放器对象时,它不起作用。任何帮助,将不胜感激。

这是我关闭 Player 对象的 Player 脚本中的代码部分:

private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "Asteroid")
        {
            _rigidbody.velocity = Vector3.zero;
            _rigidbody.angularVelocity = 0.0f;


            this.gameObject.SetActive(false);

            GameManager.Instance.PlayerDeath();
        }

这是我尝试重新激活 Player 对象的 GameManager 部分:

public void PlayerDeath()
    {
        this.lives--;

        if (this.lives <= 0)
        {
            GameOver();
        }
        else
        {
            //Invoke(nameof(Respawn), this.respawnTimer);
            StartCoroutine(Respawn(respawnTimer));

        }



    }

    public IEnumerator Respawn(float f)
    {
        yield return new WaitForSeconds(f);


        this.player.transform.position = Vector3.zero;
        this.player.gameObject.SetActive(true);
    }

回答1

你的 GameOver 方法会调用 IEnumerator Respawn 吗?

如果不是,那么我认为这是您的问题,因为我目前所知道的是

将执行一个 if 语句,如果它是 True 如果不是 True 那么它将是一个Else 语句,在您的情况下,您的 IEnumerator 位于 Else 语句中,尝试将其移到上方。

相似文章

c# - C#协程重复特定部分?

我正在为一个学校项目和我的成就系统制作一个cookieclicker游戏,我希望弹出一个简单的动画,并在一个单独的菜单脚本中显示文本,该脚本已经可以很好地工作了。我遇到的问题是前两个成就工作正常,但在...

c# - unity 中相机的移动?

所以我和我的朋友们正在unity中选择相机,我们想添加一个“跟随”相机,所以我们有并遵循了一个youtube教程,在这里和那里编辑它以适应我们的目的。但是当我们运行它时,我们遇到了一个问题,相机并没有...

随机推荐

最新文章