如何解决如何检查游戏对象是否处于活动状态
我正在制作一个背包,我试图让它像 minecraft 一样,你只需按“E”,它就会打开,如果已经打开,他们就会关闭它。 Bty 我在 C# 中使用 Unity。
if (Input.GetKeyDown(backpackKey) && backpack.activeInHierarchy == false)
{
backpack.SetActive(true);
}
if (Input.GetKeyDown(backpackKey) && backpack.activeInHierarchy == true)
{
backpack.SetActive(false);
}
解决方法
您的两个 if 条件都将匹配:
- 您的对象处于非活动状态
- 您将其设为活动状态
- 现在第二个条件也匹配
- 您再次将其设为非活动状态
要么使用 else if
使两个块都独占运行,或者..实际上你可以简单地做
if (Input.GetKeyDown(backpackKey))
{
// I would prefer using "activeSelf"
// If any parent is inactive your check might always return false even though the object
// itself is already set to active. Don't know if it has an impact on performance
// I just find it more convenient here since this is the value changed by "SetActive"
backpack.SetActive(!backpack.activeSelf);
}
,
您缺少一个 else
语句:
if (Input.GetKeyDown(backpackKey))
{
if(backpack.activeInHierarchy == false)
{
backpack.SetActive(true);
} else {
backpack.SetActive(false);
}
}
在您的代码中,每当您尝试打开它时,您最终都会陷入第二个条件,现在为真,并立即关闭它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。