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

Unity中点击退出暂停菜单后对象自动上下往复移动如何修复?

问题原因

  1. 输入API使用错误:CrossPlatformInputManager.GetButton用于检测按钮长按状态,若你需要响应单次点击,应该使用GetButtonDown,否则按钮按下期间逻辑会持续执行,容易出现状态异常。
  2. 移动逻辑和输入耦合:当前你把菜单移动的逻辑写在了按钮按下的判断分支里,合理逻辑应该是点击一次按钮就触发菜单向对应方向移动,直到碰到边界自动停止,不需要一直按住按钮。
  3. 冗余判断逻辑错误:nors == true && !nors == false完全等价于nors == true,重复写判断条件没有意义,还容易引入逻辑隐患。
  4. 边界碰撞后没有停止移动:你在触发器中仅修改了nors的值,没有重置移动状态,菜单会继续往边界外移动,穿出触发器后又会触发反向的移动逻辑,最终形成往复循环。
  5. 状态变量闲置:你定义了UpDown变量用来标记移动方向,但是后续逻辑完全没有用到该状态,变量设置没有生效。

修复方案

  1. 将输入检测改为单次点击检测,点击时仅切换菜单的移动状态,不要把移动逻辑和输入判断绑定。
  2. 把移动逻辑抽到Update外层,统一根据UpDown的状态执行移动,和输入操作解耦。
  3. 调整触发器逻辑,碰撞到对应边界时直接将UpDown设为0(停止移动),同时更新nors的状态,避免继续移动。
  4. 删掉冗余的判断条件,简化逻辑减少出错概率。

修复后代码

Update 方法

void Update()
{
    // 单次点击暂停按钮,触发菜单向下展开
    if (CrossPlatformInputManager.GetButtonDown("pausebutton"))
    {
        if (nors == true)
        {
            UpDown = 1;
            ani = true;
            darkin.SetBool("play", true);
            darkengame.SetActive(true);
        }
    }
    // 单次点击退出按钮,触发菜单向上收起
    if (CrossPlatformInputManager.GetButtonDown("exit"))
    {
        if (nors == false)
        {
            UpDown = 2;
            ani = false;
            darkin.SetBool("play", false);
        }
    }

    // 独立移动逻辑,和输入分离
    if (UpDown == 1)
    {
        transform.Translate(Vector3.down * speed * Time.deltaTime);
    }
    else if (UpDown == 2)
    {
        transform.Translate(Vector3.up * speed * Time.deltaTime);
    }
}

触发器方法

private void OnTriggerEnter2D(Collider2D other)
{
    if (other.gameObject.CompareTag("stophome"))
    {
        // 碰到上边界,停止移动,标记为已收起状态
        UpDown = 0;
        nors = false;
    }
    if (other.gameObject.CompareTag("stophome2"))
    {
        // 碰到下边界,停止移动,标记为已展开状态
        UpDown = 0;
        nors = true;
        darkengame.SetActive(false);
    }
}

注意事项

  • 初始化时请将UpDown设为0,nors的初始值根据菜单初始状态设置:初始收起设为false,初始展开设为true。
  • 确认两个边界触发器的位置正确,stophome放在菜单收起的顶部位置,stophome2放在菜单展开的底部位置,避免菜单穿出触发器。
  • 检查CrossPlatformInputManager的虚拟按钮配置,确保pausebutton和exit不会一直处于按下状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 06:09:03