Timer never moves
No code called StartTimer, or Time.timeScale is zero.
Components
Run, pause, reset, and display a countdown that requests completion when its configured duration expires.
TimedObjective accumulates scaled Time.deltaTime, updates an optional TMP label, and requests completion when elapsed time reaches Duration Seconds. The timer is paused by default; authoring the component does not start it automatically. Bind StartTimer() to the Ordered Objective's start event or call it from project code at the intended moment.
Use it for waits and countdowns tied to game time. Do not use it for a deadline that must continue while time scale is zero; create a custom unscaled timer for that rule.
| Member | Meaning | Behavior |
|---|---|---|
| Duration Seconds | Target elapsed duration, clamped to zero or more in Inspector | Zero completes on the first running update |
| Timer Text | Optional TMP_Text output | Shows remaining time as minutes:seconds |
| Completed Text | Text shown when remaining reaches zero | Defaults to Completed |
| StartTimer() | Starts or resumes unless locally complete | Does not reset elapsed time |
| PauseTimer() | Stops accumulation | Preserves elapsed time and label |
| ResetTimer() | Pauses and clears elapsed time | Refreshes label to full duration |
Public read-only properties expose DurationSeconds, ElapsedSeconds, and IsRunning for UI or diagnostics.
When the deadline is reached, the component stops itself, calls TryComplete(), then writes the zero/completed label. If the ordered flow rejects completion because the link is early or wrong, the timer remains stopped; correct the activation wiring and link rather than expecting automatic retries.
ResetObjective() clears the inherited completion flag and calls ResetTimer(). It does not start automatically after reset. The Objective start event must start it again on every run.
Stabilize the system and set its On Objective Start listener to TimedObjective.StartTimer.No code called StartTimer, or Time.timeScale is zero.
Inspect Objective Link and whether another row was current when the timer started.
Timer Text is optional and requires the official TextMesh Pro package; completion does not depend on the label.