I am building a simple one scene mobile arcade game in Unity as part of my attempt to learn to code. The game might have multiple levels, say 100. To build the first level, I have used multiple scripts which are all referencing each other via [serializefield] in the inspector. Moreover, there are multiple UI textboxes displaying info, which are also linked to relevant scripts in the inspector. I did this as I thought it is the most efficient way after doing a bit of research (basically avoiding the engine looking for an already existing object in the scene). I prefabbed everything, including the empty game objects holding the scripts and moved to the second level.
However...
When I started building the second level, which would essentially contain the same game objects with different parameters, I noticed that when I dropped the prefabs into the scene I had to manually re-link all references in the inspector. With so many links to make over hundreds of levels, this would be very tedious and I would keep missing some links. It is all well and good to drop prefabbed objects in the scene but the references have to be re-established for each level directly in the scene. Having prefabs link to prefabs does not work (I tried it). So, there seems to be a lot of manual linking work this way.
So the upshot is...
I am starting to think I am better off using GameObject.Find("string") and FindObjectOfType<> for all my references to avoid having to continually make lots of links in the inspector for each level.
However...
Checking on forums, people say Find methods are inefficient and should be avoided, how inefficient I don't know. That concerns me as this will be a mobile game. Most of them are recommending [serializefield] and links in the Inspector as the best solution.
So, I am wondering if you can shed some light from your experience. What would work best for my situation? Other options I haven't considered ?
Many thanks.