Lazy vs Forced Instantiation

By default, the GlobalShotManager gameobject becomes instantiated (technically called a “Singleton”) when any Shot is first fired in the system. This is sometimes referred to as “lazy” instantiation.


By contrast, you can force its instantiation at start of the scene by attaching the ForceGlobalShotManager script on any persistent GameObject in the scene (for this reason, usually best placed on the Camera gameobject).

It is recommended in production scenarios to force instantiation as otherwise it can introduce a performance hiccup when lazily instantiated.

Demo scenes use the demonstration version of the GlobalShotManager, which is set here via the Demo Version toggle.


We’ll refer to the demo version of the GlobalShotManager in the rest of this guide.