Skip to content

Understanding the Inspector UI

Jungle replaces the default Inspector with a visual system designed for composing behaviors. Instead of writing code to wire up a speed source or a trigger, you click a button, pick from a categorized menu, and configure the result - all inside the Inspector.

Every Jungle-powered component uses the same visual language, so once you learn it in one place, you can read it everywhere.

What it looks like in practice:

  • A "Speed" field shows "Float Value" - click it, switch to "Random Float", and the field now shows a Min and a Max instead of a single number
  • A "Conditions" list lets you add distance checks, capacity limits, or tag filters by picking them from a popup menu
  • Sections and tabs keep complex components organized without scrolling through walls of fields
Inspector
Pickup Sensor
Detector? ⇅ ⋮
Detection1
Detection StrategyTrigger & Collision2
Selection Strategy(None)◎3
Start & Stop
Processes
On Added(None)◎
On Removed(None)◎
Any Available Process(None)◎
None Available Process(None)◎
A Detector: every Jungle component reads the same way.
  1. A section. Click its bar to fold it.
  2. A field with a type picked. Click the pill to change it.
  3. An empty field. Click (None) or the round button to pick a type.

TypeSelectableField

The TypeSelectableField is the core building block. Whenever a component has a field that can be one of many types (a value source, a process, a condition), it renders as a TypeSelectableField.

Anatomy

A TypeSelectableField has three parts:

  1. Type selector button - Displays the currently selected type name. Click it to open the Class Selection popup and choose a different behavior.
  2. Foldout body - Expand to see the configuration fields specific to the selected type.
  3. Help toggle - When available, shows a plain-language description of what the selected type does.

Interaction

  • Click the type name (the pill) to open the selection popup
  • Click the foldout arrow to expand or collapse the type's properties
  • Right-click for context menu options (copy, paste, reset)
SpeedRandom Float0–1
Collapsed: the type pill, then a short summary of its settings.
SpeedRandom Float
Min0
Max1
Multiplier1
Probability Curve
Curve Sample Count100
Same Roll For(None)◎
Roll Seed0
Expanded: the settings of the picked type, in a box under its row.

Visual Styles

TypeSelectableField supports three visual styles, configurable globally via Project Settings > Jungle > Field Style:

Style Description
Pill (default) Subtle rounded badge, no border
Underline Type name with a bottom border only
Classic Full input-field look, like Unity's object fields
SpeedRandom Float
Sink(None)◎
Pill.
SpeedRandom Float
Sink(None)◎
Underline.
SpeedRandom Float
Sink(None)◎
Classic.

Changing the visual style

Open Edit > Project Settings, find the Jungle section, and pick a Field Style. The change applies globally to all Jungle components.

Type Icons

When enabled in Project Settings > Jungle, a small icon appears next to each type name in selectable fields, list headers, Monitor sections, and the Timeline window. The icon is the one set by the type's JungleClassInfo attribute.

Turn it off if you prefer a cleaner look or if the icons are not meaningful for your project.


Number Fields

Drag a number field's name left or right to change its value by a fixed step for each pixel you move. Hover the name to see the step, shown as a small badge such as ±0.01.

  • Middle-click the field to try the next step: 0.001, 0.01, 0.1, 1, 10, 100 for decimals, and 1, 5, 10, 50, 100 for whole numbers.
  • Shift + press and hold the field to open a ladder of every step under it. Move up or down to pick a step, then left or right to change the value. Release to close it. The step you end on stays for the next drag.
  • The first step follows the value's size, so small decimals start with a small step and large ones with a large step. Whole numbers start at 1.
  • Click the number to type a value, as usual.

This works on every number in a Jungle component or graph, including each X, Y and Z of a vector.


JungleList

When a field is a list of polymorphic types (e.g., a list of conditions or a list of modifiers), Jungle renders it as a JungleList instead of Unity's default ReorderableList.

Features

  • Add button — Opens the type picker to add a new element of a selected type
  • Remove button — Delete individual elements
  • Drag reorder — Grab the handle to reorder elements by dragging
  • Per-element foldout — Each element is a TypeSelectableField with its own expand/collapse
Inspector
Data Storage Component? ⇅ ⋮
Entries3+1
Entry 1Float Entry
KeyHealth
Value100
Entry 2Int Entry
Entry 3Bool Entry
A list of entries. Drag a row by its handle to reorder it; each row folds on its own.
  1. The add button opens the type picker; the number is the element count.

Toggle Set Mode

Some lists use Toggle Set rendering. Instead of a growable list with an add button, the Inspector shows one row per possible type. Each row has a toggle:

  • Checked — The type is active; its properties render inline
  • Unchecked — The type is inactive; the row collapses to a single line

Toggle sets are used when each type should appear at most once (e.g., a set of optional modifiers where you either enable or disable each one).

Simple Step
Labelsimple
Amount1
Scale Step
Composite Step
A toggle set: one row per type. Checked rows show their settings; unchecked rows stay a single line.

UniqueTypes

Toggle set mode implies UniqueTypes — the list enforces that no two elements share the same concrete type. Regular JungleLists can also use UniqueTypes without toggle set rendering, in which case the add button simply hides types already present.


Sections and Tabs

Jungle components with many fields use section attributes to organize the Inspector into logical groups.

SectionAttribute

Groups fields under a collapsible header. Sections can be nested via SubsectionAttribute for finer organization.

[Section]  Main Section Header
├── Field A
├── Field B
│   [Subsection]  Subsection Header
│   ├── Field C
│   └── Field D
└── Field E

TabSectionAttribute

Renders fields as horizontal tabs. Only one tab is visible at a time, keeping the Inspector compact even for components with many settings.

Inspector
Attachable Object? ⇅ ⋮
Filtering1
Point Filter0+
None
Drag Configuration
Attaching
Attached
Detaching
2
Attach Conditions0+
None
Attaching State(None)◎
On Attach Started ()
List is Empty
+−
An Attachable Object (from Octoputs): sections on top, then a row of tabs.
  1. Sections fold open and closed.
  2. Tabs show one group of fields at a time.

AutoSectionedEditor

Jungle's custom editor base class (AutoSectionedEditor) reads these attributes automatically and generates the sectioned layout. You do not need to write custom editor code to get organized Inspectors — just annotate your fields.


Decorators

Jungle extends Inspector rendering with decorators — additional visual overlays attached to managed reference fields.

Decorator What It Does
ValueDisplayDecorator Shows the current runtime value next to a value provider field (e.g., "Position: (1.2, 3.4, 5.6)")
DebugGizmoDecorator Draws scene gizmos based on the field's current value (e.g., position markers, direction arrows)
LocalValueAutoResolveDecorator Automatically resolves value providers to local components on instantiation, so fields work out of the box without manual assignment

Decorators activate automatically when applicable. You do not need to configure them manually.