Troubleshooting / FAQ
Create menu items not showing (e.g. TrackMarkersSO)
Symptoms:
- You can’t find Create → RaceTiming → TrackMarkersSO
Common causes: 1. Unity compile errors: fix all Console errors first. 2. Unity needs reimport/recompile. 3. Library cache issue.
Try (in order):
1. Assets → Reimport All
2. Reimport TrackMarkerScriptableObject.cs
3. Close Unity and delete Library/ folder, then reopen
See also: MENU_TROUBLESHOOTING.md (repo root).
Can’t add waypoints / nothing happens when clicking
Checklist:
- Is the TrackMarkers GameObject selected?
- Does it have TrackMarkerManagerBehaviour?
- Is a TrackMarkersSO assigned?
- Are you holding Shift while clicking?
- Does your scene have colliders/terrain for raycasts?
Race Tower UI not showing
- Ensure
RaceTowerUI.RowPrefabis assigned - Ensure
RaceTowerUI.Containeris assigned - Ensure
RaceTimingManagerexists and the session is running - Ensure at least one
RaceCompetitorexists (rows are created per competitor)
See also: UI Setup: RaceTowerUI
Waypoints not visible
- Ensure the TrackMarkers GameObject is selected.
- Ensure the ScriptableObject has markers in its list.
- Scene view must be active.
No toast notifications
See the setup guide: - UI Setup: Toast Notifications
RaceToastBridge requires:
- A UnityToast.ToastManager in the scene
- A RaceTimingManager in the scene
Check Console for:
- [RaceToastBridge] No ToastManager found...
- [RaceToastBridge] No RaceTimingManager found...
Gaps show as "---" or look incorrect
- Drivers that have not crossed the start line may show
---(by design in some modes). - Ensure your track loop is correct and cars actually wrap from ratio ~1 back to ~0.
- Ensure
RaceTimingManageris finding theTrackMarkerManagerBehaviourand settingLapTimer.TrackLength.
Track editor performance concerns
The track marker system is generally fine for typical race tracks. If you push marker counts very high (hundreds/thousands), consider: - reducing marker density - using subdivision settings appropriately - (future option) using KD-tree acceleration for nearest lookups
Penalties not affecting standings
Symptoms: - Time penalties issued but race results unchanged - DSQ competitors still showing in normal positions
Solutions:
1. Verify you're using PenaltyAwareRankingStrategy (default):
csharp
var strategy = RaceTimingManager.Instance.LapTimer.RaceDirector.RankingStrategy;
Debug.Log($"Strategy: {strategy.GetType().Name}");
2. Ensure penalties are being applied before checking standings
3. Check Console for any penalty-related errors
Invalidated laps still showing in Race Tower
Symptoms: - Lap invalidated but still appears as best lap - "Gap to Best Lap" mode shows invalid times
Solution:
- This should be fixed in current version (uses GetBestValidLap())
- If using custom UI code, update to use ILapInvalidationManager.GetBestValidLap()
Can't revalidate a lap
Symptoms:
- RevalidateLap() called but lap still shows as invalid
Solution:
- Auto-invalidated laps (incomplete sectors) cannot be revalidated by design
- Only manually invalidated laps can be revalidated
- Check lap.IsAutoInvalidated to see if it's auto-invalidated
Penalty events not firing
Symptoms: - Subscribed to penalty events but no callbacks
Solutions:
1. Subscribe in Start() or later, not Awake():
csharp
void Start() {
var pm = RaceTimingManager.Instance.LapTimer.RaceDirector.PenaltyManager;
pm.OnTimePenaltyIssued += HandlePenalty;
}
2. Ensure RaceTimingManager is initialized before subscribing
3. Check that penalties are actually being issued (add Debug.Log in issue methods)
Current lap invalidation flag persists
Symptoms:
- InvalidateCurrentLap flag still true after lap completion
Expected behavior: - Flag should auto-clear when lap completes - If persisting, check your RaceTiming version or file a bug report