Am I "misusing" the concept of statics with this implementation?

In each of the scenes of my game there are a number of “Module” objects. Certain operations require a list of all Modules in the current scene. I dislike using some sort of “ModuleHolder” class to hold a reference to all Modules because this needlessly splits Module-related code across two separate classes. My solution has been to find all objects of type Module when the scene loads and store this in a static array in the Module class itself.

This works swimmingly with one caveat. As different scenes have different modules (and even reloading the same scene creates different instances of the same Modules) I need to reset the array holding all Modules on any scene change. This leaves me with a nagging feeling that I am using statics “incorrectly” in some way.

The fact that my current implementation just works may be paramount, but I was wondering if there was perhaps an alternative way to do this that I might be missing. Any thoughts (or reassurances that I am not, in fact, abusing the static property)?

I prefer statics over singletons, because a singleton has other things going on off the bat, and there is an incredibly simple method of making your statics work how you want for swapping scene data. This is what I personally do.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;

namespace myExample
{
    public static class ExampleManager
    {
        public static exampleScripts[] MyScripts
        {
            get
            {
                if (myScripts== null)
                {
                    MyScripts = GameObject.FindObjectsOfType<exampleScripts>();
                }
                return myScripts;
            }
            private set
            {
                myScripts = value;
            }
        }
        private static exampleScripts[] myScripts;
    }
}

When you switch scenes, any scripts in that scene are of course no longer being referenced, so you make your static file never return null by auto-filling the reference with whatever you intended.