Resources.Load() vs Editor Referencing?

I need to have references to various types of prefabs so as to instantiate them and build a level at runtime.
When the scene starts, I read a JSON file and decide what prefabs I will need to instantiate. Say there are 70 prefabs in total, but for a level I may only need 20 of them.

One approach would be to have a script referencing all 70 prefabs (drag and drop through the editor, the first problem). As far as I understand, that will be a big waste of memory (as all prefabs will be loaded into memory and I will only use a few).

The other approach would be loading prefabs via Resources.Load() at runtime, and catch them into a reference variable so as to instantiate them after. That way I’ll be able to load only the prefabs I’m interested in.

I see the first option bad for memory (I’m developing a mobile game), and the Unity Documentation makes it clear to stay away from Resources.Load(). Would this be a “good” scenario for using Resources.Load() or should I explore some different approach?

I’m in a very similar situation. I’m also working on a level editor-type-thing and need to have the possible objects to spawn all in memory so I can generate the UI for them.
At the moment I’m using Resources.LoadAll, then instantiating different loaded prefabs as the player chooses them.

I plan on having many many possible meshes to add to the scene, so dragging and dropping them all into an array in the Inspector just isn’t doable, which is why I’m using Resources–I basically have it automate the whole thing.

BUT, like you said, people often say Resources.Load isn’t a good idea. So I’m not sure what to do either! :eyes:

Assetbundels / Adressables seem to be the way unity intend it to work in the future.
Then you can get a asset by there adress similar to the resources load.