# What is the purpose of gui.set\_enabled() (or Enabled in Properties)?

**URL:** <https://forum.defold.com/t/what-is-the-purpose-of-gui-set-enabled-or-enabled-in-properties/82204>\
**Category:** Questions\
**Created:** [January 7, 2026, 7:46pm UTC](https://forum.defold.com/t/what-is-the-purpose-of-gui-set-enabled-or-enabled-in-properties/82204 "2026-01-07T19:46:32Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Alex-Buvin](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/alex-buvin/32/40683_2.png) [@Alex-Buvin](https://forum.defold.com/u/Alex-Buvin)\
**Post date:** [January 7, 2026, 7:46pm UTC](https://forum.defold.com/t/what-is-the-purpose-of-gui-set-enabled-or-enabled-in-properties/82204/1 "2026-01-07T19:46:32Z")

</div>

Why do we need Enabled if turning it off does not completely disable the node, but only its visibility? Which, in principle, is what Visible does as well.

After reading the [GUI scenes in Defold](https://defold.com/manuals/gui/) and [API reference (GUI)](https://defold.com/ref/gui-lua/) , I couldn’t find a clear answer. Except that it should do „If unchecked, the node is not rendered, not animated and can not be picked using .” but it doesn’t.

Whether Enabled is on or off, the node continues to work, except for its visual display. If you also turn off Visible, nothing will change.

There was also an [old topic](https://forum.defold.com/t/gui-set-enabled-doesnt-prevent-gui-pick-node-in-input/28819/5) regarding this issue, but it did not specify how it should actually work

---

<div class="post-metadata">

**Author:** ![britzl](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/britzl/32/23_2.png) [@britzl](https://forum.defold.com/u/britzl)\
**Post date:** [January 7, 2026, 9:25pm UTC](https://forum.defold.com/t/what-is-the-purpose-of-gui-set-enabled-or-enabled-in-properties/82204/2 "2026-01-07T21:25:05Z")

</div>

The [documentation](https://defold.com/manuals/gui/#node-properties) says the following:

**Enabled**  
If unchecked, the node is not rendered, not animated and can not be picked using `gui.pick_node()`. Use `gui.set_enabled()` and `gui.is_enabled()` to programmatically change and check this property.

**Visible**  
If unchecked, the node is not rendered, but can still be animated and picked using `gui.pick_node()`. Use `gui.set_visible()` and `gui.get_visible()` to programmatically change and check this property.

---

<div class="post-metadata">

**Author:** ![Halfstar](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/halfstar/32/26587_2.png) [@Halfstar](https://forum.defold.com/u/Halfstar)\
**Post date:** [January 7, 2026, 9:40pm UTC](https://forum.defold.com/t/what-is-the-purpose-of-gui-set-enabled-or-enabled-in-properties/82204/3 "2026-01-07T21:40:35Z")

</div>

One important difference is that disabling a node will hide it’s child nodes as well, but setting visible to false will keep the child nodes visible. So you can hide a whole GUI screen by disabling the root node.

And you can also check is a node is enabled with [gui.is\_enabled()](https://defold.com/ref/stable/gui-lua/#gui.is_enabled:node-recursive), and for example only apply button presses in on\_input() if the node is enabled.
