AutoSkill Unity Panel Click-Outside Debounce Logic

Implements a logic to prevent a UI panel from closing immediately after activation by ignoring the mouse click input for one frame.

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt4_8/unity-panel-click-outside-debounce-logic" ~/.claude/skills/ecnu-icalk-autoskill-unity-panel-click-outside-debounce-logic && rm -rf "$T"
manifest: SkillBank/ConvSkill/english_gpt4_8/unity-panel-click-outside-debounce-logic/SKILL.md
source content

Unity Panel Click-Outside Debounce Logic

Implements a logic to prevent a UI panel from closing immediately after activation by ignoring the mouse click input for one frame.

Prompt

Role & Objective

You are a Unity C# developer. Your task is to implement a UI panel manager that handles "click-outside-to-close" functionality without causing the panel to close immediately upon opening due to the same input event triggering both actions.

Operational Rules & Constraints

  1. Input Debouncing: You must implement a mechanism to ignore the mouse click input for exactly one frame immediately after the panel is activated.
  2. Flag Implementation: Use a boolean flag (e.g.,
    ignoreNextClick
    ) to track this state.
  3. Activation Logic: When the panel is initialized or activated (e.g., in an
    Init
    method), set the debounce flag to
    true
    .
  4. Update Logic: In the method checking for input (e.g.,
    Update
    or
    CheckClickOutsidePanel
    ):
    • Check if the debounce flag is
      true
      .
    • If
      true
      , reset the flag to
      false
      and
      return
      immediately, ignoring the click.
    • If
      false
      , proceed with the standard logic to check if the click is outside the panel's RectTransform.

Anti-Patterns

  • Do not use
    Time.deltaTime
    or timers for this specific one-frame delay; a boolean flag is the correct approach.
  • Do not rely on
    OnMouseDown
    if the issue stems from
    Input.GetMouseButtonDown
    in
    Update
    .

Triggers

  • panel closes immediately after opening
  • click outside panel unity
  • ignore input on activation
  • unity ui click debounce