【问题标题】:Disable script after time Unity时间 Unity 后禁用脚本
【发布时间】:2020-12-08 17:18:19
【问题描述】:

我有一个可以在我的玩家对象上启用射击脚本的道具。 powerup 脚本在我的 powerup 对象上。现在,当我使用

启用脚本时
player.GetComponent<ShootingRocket>().enabled = true;

它工作正常,但是当我在 5 秒后尝试禁用脚本时,它什么也没做。这是我用于此的脚本:

void OnTriggerEnter2D(Collider2D other)
{
    if (other.CompareTag("Player"))
    {
        StartCoroutine(Pickup(other));
    }
}

IEnumerator Pickup(Collider2D player)
{
    player.GetComponent<ShootingRocket>().enabled = true;

    GetComponent<SpriteRenderer>().enabled = false;
    GetComponent<Collider2D>().enabled = false;

    yield return new WaitForSeconds(sec);

    player.GetComponent<ShootingRocket>().enabled = false;

    Destroy(gameObject);
}

我已经为时间做了一个变量:

 public float sec = 5f;

我不知道我做错了什么。如果有人可以帮忙,请做。

如果您认为问题出在其他地方,我可以提供任何其他脚本。 我是 Unity 和 c# 的新手,一般来说是一种编码,所以如果有人能提供帮助,我将不胜感激。谢谢!

【问题讨论】:

  • 您确定正在调用OnTriggerEnter2D 吗?在里面放一个Debug.Log 声明。
  • 正如@ben 这里所说的,检查是否调用了 OnTriggerEnter。或者,您可以尝试使用 Invoke 而不是 IEnnumerator。问题在于 colider i 的东西。您的播放器是否附加了 Rigidbody2D?
  • 感谢您的回复。我把 'Debug.Log("捡起来了!"); ' 在 'if (other.CompareTag("Player"))' 中,它表明它是在控制台中拾取的。此外,shootingRocket 脚本在启动时被禁用,它在此处启用 'player.GetComponent().enabled = true;'那行得通。当设定时间过去时,游戏对象被破坏,但只有再次禁用脚本的脚本部分不起作用。我还放了 'Debug.Log("Disabling"); '在'之后'产生返回新的WaitForSeconds(sec);'并且没有显示在控制台中。

标签: c# unity3d scripting disable


【解决方案1】:

所以

  1. 检查这段代码是否真的被调用了,也许碰撞器没有调用任何东西?
  2. 可能将 'other.CompareTag("Player")' 替换为 'other.gameObject.CompareTag("Player)
  3. 检查玩家是否有这个正确的标签

【讨论】:

  • 感谢您的回复。我把 'Debug.Log("Picked up!"); ' 在 'if (other.CompareTag("Player"))' 中,它表明它是在控制台中拾取的。我还放了 'Debug.Log("Disabling"); '在'之后'产生返回新的WaitForSeconds(sec);'这并没有显示在控制台中。播放器有“播放器”标签。我试过这样做“也许用 'other.gameObject.CompareTag("Player)" 替换 'other.CompareTag("Player")' 一切都是一样的。此外,只有当你拿起时才会调用 onTriggerEnter 函数中的 debug.log第一次上电,当你再次拿起它时它不显示。
  • Maybee.. 而不是 'WaitForSeconds(sec)' 做 'WaitForSeconds(5)'。
  • 如果你知道如何在 Visual Studio 中使用调试器 - 使用它。如果没有,只需每隔几行放置 Debug.Log 并查看代码在哪里停止
  • 我尝试将 WaitForSeconds(sec) 更改为不使用变量,但它仍然不起作用。我在它应该采取的每个操作之前和之后都放置了 Debug,log 并且它不能正常工作
  • 这是我的 Debug.Log 在控制台中显示的内容:drive.google.com/file/d/16i-nG227FP3_Ro25kJTqm_MfBsTg_oQy/…。这是我的代码截图:drive.google.com/file/d/1V0g7L4h2sQpZnReBsF0-VRTqWdUsfFS7/….
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 2017-12-25
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多