why a list of transforms is empty after loading new scene?

I have a settings class with a static list filled with Transforms. If I load a new scene and try to get one of the items from the list, all entries are set to NULL.

Is there a reason why Unity can’t keep Transforms in a List from one scene to another?

Because the Transforms are by reference not by value. When a new scene loads they all end up null (assuming the Transforms are of scene objects).

If you want to keep them around you either need to make copies of the Transforms to put in your list (which not change when the original transform changes) or use Vector3 or some other datatype to store them statically (updating periodically).

If you are familiar with pointers (and not with references), it’s essentially your list is a list of pointers to Transforms (that are owned by the object). When that object goes away that memory location is now null (because of the object destructor). Not 100% correct, since it’s references, not pointers… but the key point is you don’t have copies of the Transforms, your list just points to the existing ones and when the object with that transform goes away the transform gets nulled.

If you want to keep GameObjects persistent across scene transitions, you need to have a script on them with:

 DontDestroyOnLoad();

I’m taking a guess that your script with the list, is not persistent.
but you need yo give more information on your script and what exactly are you doing