如果项在层次结构中处于非活动状态,则触发该条件的C#if条件



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

如果要在对象被禁用时调用代码,则应该使用OnDisable()。未对禁用的对象调用Update()方法。

最新更新