You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity背包系统按同一按键仅能关闭一次无法再次打开问题求助

问题分析与解决方案

核心原因

你的脚本大概率挂载在背包对象本身上了。当背包被SetActive(false)禁用后,该对象上的所有脚本都会停止执行,Update()函数不再运行,自然无法响应后续的按键输入。

解决方案

方案1:迁移控制脚本到始终激活的对象

把这个背包控制脚本挂载到始终处于激活状态的对象上,比如GameManager、玩家对象或者专门的UI控制对象。这样即便背包被关闭,脚本依然能正常运行,响应按键切换状态。

方案2:用独立变量记录背包状态(辅助优化)

额外维护一个布尔变量记录背包的显示状态,避免直接依赖对象的activeSelf属性(核心前提还是要保证脚本所在对象一直激活):

private bool isInventoryActive;

void Start()
{
    // 初始化状态与背包初始激活状态保持一致
    isInventoryActive = inventory.gameObject.activeSelf;
}

void Update()
{
    if (Input.GetKeyDown(KeyCode.Escape))
    {
        isInventoryActive = !isInventoryActive;
        inventory.gameObject.SetActive(isInventoryActive);
    }
}

额外检查项

  • 确认inventory变量已在Inspector面板中正确赋值,不存在空引用问题
  • 排查是否有其他脚本在修改背包的激活状态,导致状态冲突

内容的提问来源于stack exchange,提问作者Potato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:05:26