我有一个简单的脚本,该脚本显示一个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);
}
}