我有一个简单的脚本,该脚本显示一个UI提示,并在退出我编写的对撞机时消失,如果该项目处于非活动状态,if语句也会禁用文本,因为当玩家拿起该项目时,该项目被设置为非活动状态,但UI元素仍然徘徊。

public Text PickUpText;

void Update()
{
    if (!gameObject.activeSelf)
    {
        PickUpText.gameObject.SetActive(false);
    }
}

public void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.CompareTag("Player"))
    {
        PickUpText.gameObject.SetActive(true);
    }
}
public void OnTriggerExit2D(Collider2D collision)
{
    if (collision.CompareTag("Player"))
    {
        PickUpText.gameObject.SetActive(false);
    }
}

最佳答案

如果游戏对象未激活,则不会调用您的更新方法。您需要使用OnDisable方法。

public Text PickUpText;

void OnDisable()
{
    PickUpText.gameObject.SetActive(false);
}

public void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.CompareTag("Player"))
    {
        PickUpText.gameObject.SetActive(true);
    }
}
public void OnTriggerExit2D(Collider2D collision)
{
    if (collision.CompareTag("Player"))
    {
        PickUpText.gameObject.SetActive(false);
    }
}

08-26 21:54