我有一个简单的脚本,该脚本显示一个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);
}
}
答案 0 :(得分:3)
如果要在禁用对象时调用代码,则应使用OnDisable()
。不能在禁用的对象上调用Update()
方法。
答案 1 :(得分:3)
如果游戏对象未激活,则不会调用您的更新方法。您需要使用 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);
}
}